天天看点

一、Apache Dubbo学习整理---架构初探

一、Apache Dubbo学习整理---架构初探

1、注册中心

2、服务端(提供者)

3、客户端(调用者)

4、监控中心

一、Apache Dubbo学习整理---架构初探

API层:

1、Service(业务层,开发者实现的业务代码)

2、Config(配置层,主要围绕ServiceConfig和ReferenceConfig类,管理配置)

SPI层:

1、Proxy(服务代理层,无论生产者还是消费者,都会生成代理类。完成远程调用)

2、Registry(注册层。负责注册和发现)

3、Cluster(集群容错层。远程调用失败的容错机制,选择调用节点的负载均衡策略)

4、Monitor(监控层,主要统计调用次数和时间等。)

5、Protocol(远程调用层。封装RPC调用具体过程,是Invoker暴露和引用的主功能入口)

6、Exchange(信息交换层。建立Request-Response模型,封装请求响应模式)

7、Transport(网络传输层。把网络传输抽象为统一接口。)

8、Seriallze(序列化层。负责序列化和反序列化)

服务暴露过程:

1、服务端在启动时,初始化服务实例

2、通过Proxy组件调用具体的协议(Protocol),把服务端要暴露的接口封装成Invoker,

3、然后转换成Exporter,

4、框架会打开服务端口等并记录服务实例到内存中。

5、最后通过Registry把服务元数据注册到注册中心。

客户端调用过程:

一、Apache Dubbo学习整理---架构初探

1、消费者调用,先通过Proxy

2、Proxy持有一个Invoker对象

3、然后出发invoke调用。

4、在invoke过程中,需要使用Cluster(负责容错),如调用失败的重试。

5、Cluster在调用之前会通过Directory获取所有可以调用的远程服务Invoker列表

6、通过路由规则将Invoker列表过滤一遍

7、通过LoadBlance方法做负载均衡,最后选出一个Invoker。

8、Invoker经过过滤链,过滤链通常处理上下文,限流,计算等。

9、使用Client做数据传输。

10、使用Codec做私有协议构造。

11、构造完成后,对数据包做序列化,然后传输到服务器提供者。

12、服务提供者收到数据包,也使用Codec处理协议,然后对完整的数据报文做反序列化。

(Request)

13、Request被分配到线程池中进行处理。

14、Server处理Request.

15、根据请求查询到对应的Exporter(内部持有Invoker)

16、经过过滤链Filter

17、得到接口的具体实现,并且调用,再原路把结果返回。

继续阅读