Dubbo

Dubbo是什么?

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用智能容错和负载均衡,以及服务自动注册和发现

又是一个框架😵,每次学习框架都感觉学不明白,可能和学习的方式有关系。对于框架还是没有本质的认识,使用来说也没有感觉,脑子里没有框架的思想,所以感觉寸步难行。之前的框架还没有开始复习,现在从Dubbo的学习来找点感觉吧。

看完基本介绍,想要继续下去,我们先要解决什么是RPC?这个问题。

RPC是什么

RPC是远程过程调用(Remote Procedure Call)的缩写形式。远程调用对立的就是本地调用,我们之前学习Java时,实现一个个方法之间的调用,这个就是本地调用。再通俗点,就是从你本机上调用方法就是本地调用,而你在本地调用了其他地方机器上的某个方法就是远程调用。 RPC 框架就是要实现像那小助手一样的东西,目的就是让我们使用远程调用像本地调用一样简单方便,并且解决一些远程调用会发生的一些问题。

RPC底层的的核心技术是序列化和反序列化

  1. 生产者发布服务
  2. 消费者按照RPC协议调用生产者发布的服务
  3. 生产者执行方法得到返回的对象
  4. 生产者将对象序列化后返回给消费者
  5. 消费者接收数据后反序列化,得到Java对象

image-20220310184149676

Dubbo工作原理

img

  1. 生产者启动Dubbo容器 ,生产服务对象
  2. 生产者把生成的服务发布到注册中心
  3. 消费者向注册中心订阅服务,把发布的服务下载到本地缓存,订阅服务后,本地缓存会自动更新生产者发布的服务
  4. 当消费者需要调用服务时,按照RPC协议要求,向生产者发起服务调用
  5. 生产者将对象交给Dubbo 容器进行序列化处理后给消费者
  6. 消费者接收返回的数据对其反序列化,得到Java对象
  7. 监视器对服务性能做监控统计
节点 角色说明
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器

注册中心Registry和监控中心Monitor都不是必须的,可以缺少