从本节开始将开始深入学习 Dubbo 网络通讯的底层实现细节,在深入学习 Dubbo 网络模型时,首先应从整体上了解 Dubbo 的网络通讯模型、线程模型是怎样的?下图是 Dubbo 官方给出的线程模型:
涉及如下方面:
- 网络调用客户端。
- 网络调用服务端。
- 网络传输,编解码、序列化。
- 网络服务端转发模型、线程池。
下面给出与上述网络模型对应的详细类图:
上述类做一个简单的结束,后续篇章将会一一详细分析。
- 基础接口
- Resetable 可重置。
- Endpoint 端(服务端、客户端基接口)
- 服务端
- Server 服务端根接口
- ExchangeServer 服务端交换机,默认实现Server,内部持有具体Server的实现。
- HeaderExchangeServer 基于协议头的服务端交互机。
- 客户端
- Channel 客户端通道描述接口。
- Client 客户端基础接口,继承自Endpoint,Channel,主要定义重连接口。
- 传输层
- Transporter 定义根据URL创建服务端或客户端,内部实现就是构建Server,Client对象。
- 编解码
- Codec2 定义编解码对应的接口。 下面以Dubbo协议为例,底层网络通信组建基于Netty,Dubbo协议创建服务端的流程如下所示:
下面还是以Dubbo协议为例,底层网络通信组件基于Netty,Dubbo协议消费端(客户端)建立网络流程图如下:
上述这些流程图将会在后文的服务端、客户端启动流程时重点分析。
作者介绍:丁威,《RocketMQ技术内幕》作者,RocketMQ 社区布道师,公众号:中间件兴趣圈 维护者,目前已陆续发表源码分析Java集合、Java 并发包(JUC)、Netty、Mycat、Dubbo、RocketMQ、Mybatis等源码专栏。可以点击链接:中间件知识星球,一起探讨高并发、分布式服务架构,交流源码。
来源:oschina
链接:https://my.oschina.net/u/4052033/blog/3158746