文档章节

源码分析Dubbo网络通讯篇概要总结(类图一览、服务端、客户端网络构造流程一览)

中间件兴趣圈
 中间件兴趣圈
发布于 01/15 20:23
字数 604
阅读 9
收藏 0

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

这里写图片描述

涉及如下方面:

  • 网络调用客户端。
  • 网络调用服务端。
  • 网络传输,编解码、序列化。
  • 网络服务端转发模型、线程池。

下面给出与上述网络模型对应的详细类图:

这里写图片描述

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

  1. 基础接口
  • Resetable 可重置。
  • Endpoint 端(服务端、客户端基接口)
  1. 服务端
  • Server 服务端根接口
  • ExchangeServer 服务端交换机,默认实现Server,内部持有具体Server的实现。
  • HeaderExchangeServer 基于协议头的服务端交互机。
  1. 客户端
  • Channel 客户端通道描述接口。
  • Client 客户端基础接口,继承自Endpoint,Channel,主要定义重连接口。
  1. 传输层
  • Transporter 定义根据URL创建服务端或客户端,内部实现就是构建Server,Client对象。
  1. 编解码
  • Codec2 定义编解码对应的接口。 下面以Dubbo协议为例,底层网络通信组建基于Netty,Dubbo协议创建服务端的流程如下所示: 这里写图片描述

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

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


作者介绍:丁威,《RocketMQ技术内幕》作者,RocketMQ 社区布道师,公众号:中间件兴趣圈 维护者,目前已陆续发表源码分析Java集合、Java 并发包(JUC)、Netty、Mycat、Dubbo、RocketMQ、Mybatis等源码专栏。可以点击链接:中间件知识星球,一起探讨高并发、分布式服务架构,交流源码。

© 著作权归作者所有

中间件兴趣圈

中间件兴趣圈

粉丝 46
博文 43
码字总数 120832
作品 0
青浦
私信 提问
Dubbo分析之Transport层

系列文章 Dubbo分析Serialize层 Dubbo分析之Transport层 Dubbo分析之Exchange 层 Dubbo分析之Protocol层 前言 上一篇文章Dubbo分析之Serialize层,介绍了最底层的序列化/反序列化层,本文继续...

ksfzhaohui
2018/10/23
643
0
dubbo源码解析-router

前言 估算了一下,里面涉及的东西还是比较多的.比如谈到框架的时候,设计模式都是一个老生常谈的话题,再比如我们开发中我们不常用的一些概念,、,以及和zookeeper相关的一些知识,比如的使用,这些...

肥朝
2017/09/30
0
0
为什么建议 Netty 的 I/O 线程与业务线程分离

点击上方“芋道源码”,选择“置顶公众号” 技术文章第一时间送达! 来源:Netty 之家 问题背景: 某互联网同学咨询一个Netty使用问题:最近在研究公司内部的RPC框架,发现底层通信框架使用的...

芋道源码
2018/10/09
0
0
dubbo源码分析系列——dubbo-rpc-default模块源码分析

简化类图 从图中可以看出该模块下的类主要是实现了dubbo-rpc-api和dubbo-remoting-api两个模块中定义的一些接口和抽象类。扩展了一种duubo框架自定义的dubbo协议,包括编解码和方法调用处理等...

杨武兵
2016/05/31
818
0
高性能网络通信框架Netty-基础概念篇

一、前言 Netty是一种可以轻松快速的开发协议服务器和客户端网络应用程序的NIO框架,它大大简化了TCP或者UDP服务器的网络编程,但是你仍然可以访问和使用底层的API,Netty只是对其进行了高层的...

阿里加多
2018/06/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 谨以此文怀念逝去的人

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 今天没歌曲 手机党少年们想听歌,请使劲儿戳(这里) 今天是周六, 刚想开始写乱弹的时候, 翻到了巴叔新建的话题上, @ 巴拉迪维:宏哥,一路...

小小编辑
43分钟前
15
1
判断php变量是否定义,是否为空,是否为真的一览表

使用 PHP 函数对变量 $x 进行比较 表达式 gettype() empty() is_null() isset() boolean : if($x) $x = ""; string TRUE FALSE TRUE FALSE $x = null; NULL TRUE TRUE FALSE FALSE var $x; N......

Grayk
今天
12
0
服务器监控

1. 服务器监控内容有哪些? 答: 主要有服务监控 和 流量监控 2. 监控重点是? 答: 是 磁盘 和 流量,cpu是浮动的,意义不大 3. 怎样 实现 监控? 答:将 服务器 分为:监控者 和 被监管协议...

杨凯123
昨天
242
0
Apollo开发指南

一、准备工作 二、本地启动 2.1 Apollo Config Service和Apollo Admin Service 2.2 Apollo-Portal 2.3 Java样例客户端启动 2.4 .Net样例客户端启动 三、开发 3.1 Portal 实现用户登录功能 3....

Ciet
昨天
307
0
英文词汇 计算机网络中的专业英语单词及其缩写

学习计算机网络时,会阅读相关的专业文献。对于文献中经常出现的缩写形式的专业名词,做了一些积累。现于此博文中做个简单的分享,希望能对后来人有所帮助,平稳地入门计算机网络。 注:博文...

志成就
昨天
178
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部