源码分析Dubbo网络通讯篇概要总结

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 源码分析Dubbo网络通讯篇概要总结

前言

从本节开始将开始深入学习Dubbo网络通讯的底层实现细节,在深入学习Dubbo网络模型时,首先应从整体上了解Dubbo的网络通讯模型、线程模型是怎样的?下图是Dubbo官方给出的线程模型: 

源码分析Dubbo网络通讯篇概要总结

涉及如下方面: 
1)网络调用客户端。 
2)网络调用服务端。 
3)网络传输,编解码、序列化。 
4)网络服务端转发模型、线程池。 
下面给出与上述网络模型对应的详细类图: 

源码分析Dubbo网络通讯篇概要总结

上述类做一个简单的结束,后续篇章将会一一详细分析。

  • 基础接口  1) Resetable 可重置。  2) Endpoint 端(服务端、客户端基接口)

  • 服务端  1)Server 服务端根接口  2)ExchangeServer 服务端交换机,默认实现Server,内部持有具体Server的实现。  3)HeaderExchangeServer 基于协议头的服务端交互机。

  • 客户端  1)Channel 客户端通道描述接口。  2)Client 客户端基础接口,继承自Endpoint,Channel,主要定义重连接口。

  • 传输层  1)Transporter 定义根据URL创建服务端或客户端,内部实现就是构建Server,Client对象。

  • 编解码  1)Codec2 定义编解码对应的接口。  下面以Dubbo协议为例,底层网络通信组建基于Netty,Dubbo协议创建服务端的流程如下所示:

  • 服务端 
    1)Server 服务端根接口 
    2)ExchangeServer 服务端交换机,默认实现Server,内部持有具体Server的实现。 
    3)HeaderExchangeServer 基于协议头的服务端交互机。

    传输层 
    1)Transporter 定义根据URL创建服务端或客户端,内部实现就是构建Server,Client对象。

    源码分析Dubbo网络通讯篇概要总结

    下面还是以Dubbo协议为例,底层网络通信组件基于Netty,Dubbo协议消费端(客户端)建立网络流程图如下:

    源码分析Dubbo网络通讯篇概要总结

    上述这些流程图将会在后文的服务端、客户端启动流程时重点分析。

    文/编辑  by  Justin

     原创   by  丁威

    源码分析Dubbo网络通讯篇概要总结

    原文始发于微信公众号(Justin的后端书架):

    本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

    本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

    原文链接:blog.ouyangsihai.cn >> 源码分析Dubbo网络通讯篇概要总结


     上一篇
    源码分析Dubbo网络通讯篇之NettyServer网络事件派发机制(Dispatch) 源码分析Dubbo网络通讯篇之NettyServer网络事件派发机制(Dispatch)
    前言 本节将主要学习Dubbo是如何使用Netty来实现网络通讯的。   从官网我们得知,Dubbo协议是使用单一长连接来进行网络传输,也就是说服务调用方持久与服务提供者建立一条连接,所有的服务调用调用信息通过。     一条TCP连接进行
    2021-04-05
    下一篇 
    源码分析Dubbo负载算法 源码分析Dubbo负载算法
    Dubbo支持在服务调用方对服务提供者采用负载均衡算法,LoadBalance 接口定义如下: @SPI(RandomLoadBalance.NAME) public interface LoadBalance { /
    2021-04-05