Dubbo网络通讯篇概述

Stella981
• 阅读 886

微信公众号:[中间件兴趣圈]
作者简介:《RocketMQ技术内幕》作者

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

Dubbo网络通讯篇概述

涉及如下方面:

  • 网络调用客户端。

  • 网络调用服务端。

  • 网络传输,编解码、序列化。

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

Dubbo网络通讯篇概述

上述类做一个简单的介绍,后续篇章将会一一分析。

1、基础接口

  • Resetable   可重置。

  • Endpoint   端(服务端、客户端基接口)

2、服务端

  • Server 服务端根接口

  • ExchangeServer 服务端交换机,默认实现Server,内部持有具体Server的实现。

  • HeaderExchangeServer 基于协议头的服务端交互机。

3、客户端

  • Channel 客户端通道描述接口。

  • Client 客户端基础接口,继承自Endpoint,Channel,主要定义重连接口。

4、传输层

  • Transporter

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

5、编解码

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

    Dubbo网络通讯篇概述

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

    Dubbo网络通讯篇概述

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


广告:作者新书《RocketMQ技术内幕》已上市

Dubbo网络通讯篇概述

《RocketMQ技术内幕》已出版上市,目前可在主流购物平台(京东、天猫等)购买,本书从源码角度深度分析了RocketMQ NameServer、消息发送、消息存储、消息消费、消息过滤、主从同步HA、事务消息;在实战篇重点介绍了RocketMQ运维管理界面与当前支持的39个运维命令;并在附录部分罗列了RocketMQ几乎所有的配置参数。本书得到了RocketMQ创始人、阿里巴巴Messaging开源技术负责人、Linux OpenMessaging 主席的高度认可并作序推荐。目前是国内第一本成体系剖析RocketMQ的书籍。
新书7折优惠!7折优惠!7折优惠!


更多文章请关注微信公众号:

Dubbo网络通讯篇概述

推荐关注微信公众号:RocketMQ官方微信公众号:

Dubbo网络通讯篇概述

本文分享自微信公众号 - 中间件兴趣圈(dingwpmz_zjj)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
RocketMQ 消息发送system busy、broker busy原因分析与解决方案
微信公众号「中间件兴趣圈」主要关注RocketMQ、Dubbo、Netty、Elasticsearch、ElasticJob、Mycat、Mybatis等主流开源中间件。1、现象最近收到很多RocketMQ使用者,反馈生产环境中在消息发送过程中偶尔会出现如下4个错误信息之一:\REJECTREQUEST\systemb
Stella981 Stella981
3年前
Dubbo Filter机制概述
微信公众号:\中间件兴趣圈\作者简介:《RocketMQ技术内幕》作者从上文可知,在服务的调用或消费端发送请求命令中,Dubbo引入过滤器链机制来实现功能的包装(或扩展)。Dubbo很多功能,例如泛化调用、并发控制等都是基于Filter机制实现的,系统默认的Filter在/dubborpcapi/src/main/resou
Stella981 Stella981
3年前
Dubbo路由机制概述
微信公众号:\中间件兴趣圈\作者简介:《RocketMQ技术内幕》作者上一节我们主要讲解了利用dubboadmin如何进行参数的动态修改,本节将重点介绍集群实现中另外一个实现细节:路由机制,Dubbo的路由机制主要解决的目的就是服务调用时,从已知的所有服务提供者中根据路由规则刷选服务提供者。Dubbo路由机制概述
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Netty在Dubbo中的线程名称
在项目中,我们会使用RocketMQ和Dubbo.前者用于发送或消费消息,后者用于两个模块之间的接口调用.RocketMQ和Dubbo在它们的底层都使用Netty作为网络通信的框架.那么今天我们就来看一下,在Dubbo中,使用的Netty线程名称叫什么?环境和流程如下1.启动zookeeper2.一个简单的Dubbo提供者,并启动它
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Dubbo序列化概述
微信公众号:\中间件兴趣圈\作者简介:《RocketMQ技术内幕》作者Dubbo序列化支持java、compactedjava、nativejava、fastjson、fst、hessian2、kryo,其中默认hessian2。其中java、compactedjava、nativejava属于原生java的序列化。整个Du
Stella981 Stella981
3年前
Dubbo服务治理之灰度发布方案(版本发布控制影响范围)
微信公众号:\中间件兴趣圈\作者简介:《RocketMQ技术内幕》作者方案背景背景:基于Dubbo服务的治理,是否可以支持业务级别的灰度发布、是否基于业务参数的路由转发。例如以GIS为例,当发布一个新版本时,是否可以以按照解析地址或合作伙伴来区分,版本发布之初,只希望地址为:广东省的解析请求发送到新版本,而其他的地址