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

今天开始记录本身学习的dubbo过程,而且转换成文档形式输出,若是有问题,请随时指出。
主要参考图书《深刻理解Apache Dubbo与实践》,网上资料信息,自身查看源码等整理出的。学习是个持续过程,之后探索中发现有问题或者更加深刻,还会继续回来补充。

1、架构图服务器

clipboard.png

一、注册中心网络

二、服务端(提供者)架构

三、客户端(调用者)负载均衡

四、监控中心框架

2、分层
dubbo层级分布学习

API层:spa

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

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

SPI层:code

一、Proxy(服务代理层,不管生产者仍是消费者,都会生成代理类。完成远程调用)

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

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

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

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

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

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

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

3、调用过程

服务暴露过程:

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

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

三、而后转换成Exporter,

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

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

客户端调用过程:

启动时经过Registry在注册中心订阅服务端的元数据(IP和端口)。获得暴露的服务。

服务消费者调用服务提供者的过程:

服务调用过程

一、消费者调用,先经过Proxy

二、Proxy持有一个Invoker对象

三、而后出发invoke调用。

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

五、Cluster在调用以前会经过Directory获取全部能够调用的远程服务Invoker列表

六、经过路由规则将Invoker列表过滤一遍

七、经过LoadBlance方法作负载均衡,最后选出一个Invoker。

八、Invoker通过过滤链,过滤链一般处理上下文,限流,计算等。

九、使用Client作数据传输。

十、使用Codec作私有协议构造。

十一、构造完成后,对数据包作序列化,而后传输到服务器提供者。

十二、服务提供者收到数据包,也使用Codec处理协议,而后对完整的数据报文作反序列化。(Request)

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

1四、Server处理Request.

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

1六、通过过滤链Filter

1七、获得接口的具体实现,而且调用,再原路把结果返回。

相关文章
相关标签/搜索