当前位置:主页 > 查看内容

开发者学堂课程干货总结——Dubbo 分布式服务治理实践(三)

发布时间:2021-06-22 00:00| 位朋友查看

简介:哈喽各位同学们大家好呀 小编今天带着开发者学院中课程“Dubbo2.0分布式RPC协议解析 ?”干货总结来了~一起学习新课程吧 课程链接以及图谱地址小编已经为大家指路了 搭配学习效果更佳 课程名称 Dubbo2.0分布式RPC协议解析 ? 课程地址 https://developer.aliyu……

哈喽各位同学们大家好呀 小编今天带着开发者学院中课程“Dubbo2.0分布式RPC协议解析 ?”干货总结来了~一起学习新课程吧

课程链接以及图谱地址小编已经为大家指路了 搭配学习效果更佳

课程名称 Dubbo2.0分布式RPC协议解析 ?

课程地址 https://developer.aliyun.com/learning/course/72/detail/1187?spm a2c6h.12873639.0.0.70672e8aSWMLvg

图谱名称 Alibaba Java 技术图谱

图谱地址 https://developer.aliyun.com/graph/java?spm a2c6h.21110250.J_5703890090.6.700e3c67EjOBeJ

Dubbo2.0分布式RPC协议解析


(一)Dubbo分布式RPC协议解析?

Dubbo是RPC基础上改造的一套框架 底层分时通信的基础设施没变 主要是在协议层另做了一层封装 封装思路是大规模服务集群治理 希望支持更多协议 不仅仅是Webservice 或者REST?API这种风格的通信 而是直接封装的服务接口 发送授信协议进行通信 基于汽车网络协议中的MQTT再次封装。?

企业局域网通信 即使有公网通信 有些平台也希望定制自己的协议 典型代表有QQ、微信阿里钉钉 封闭的聊天系统里面通信很多 Dubbo是自定义协议 实际在此基础上提供协议的再次封装 如在TCP基础上 不仅支持REST 传统跨平台跨语言的企业级行业协议 另外还会做一些协议扩展 效率方面有更高要求 希望在原生的TCP或者UDP基础上 在二进制数据包上做封装。?

?Dubbo的封装规定严格 华为自定了一套通信加密协议 协议基于GDP或UDP协议进行封装 是一种格式协议 只有自己能解析 QQ或者微信的协议 只有腾讯能解析。Dubbo思想也参考了经典分布式网络通信中的分包定义格式和思想规范。?

image.png?

如上图所示 ?

1-4?Version ?

5-8?Header Length ?

8-13?DifferentiatedServicesCodePoint ?

14-15?ExplicitCongestionNotification ?

16-18 ,19-31?Totall?Length?

...?

每个比特位都有严格定义 这种严格的消息定义主要用于自定义 ?Dubbo的通信协议编码指的是?Dubbo的自定义消息编码的格式规范。?

同样解码需要获取IP地址、有效的消息载体 都有严格定义 定义的字段越丰富 消息通信的语义功能越强大 消息的封装也越复杂 如只留1个字节 8个比特作为这个消息的额外信息 后面的话全是消息有效体 消息有效载体利用率就较高。?

上图中 总共有128个比特 这里作为前置所有消息的扩展定义 第一阶段入IP包 然后 TCP包的封装 Dubbo消息包包括封装、序列化ID、魔术编码的的比特位、状态码等。?

Dubbo在原始的ip、tcp协议之上进行了再次封装 后面在对象或者数据传时候做了序列化 序列成二进制格式 这样会效率更高 如果JSON就会涉及到更复杂的编码问题。实际上Dubbo的整个原生协议的封装足够复杂 128个比特位自己定义用于16个字节 有效载荷就比较浪费。?

Dubbo除了自定义协议的设计思想外 也和其他几个典型聊天软件已对比 有的用标准协议 有的自定义协议 自定义协议封闭性更强效率更高 行业标准协议考虑跨平台的通用性及安全性问题。?

二 高级面试题 Dubbo支持的协议??

Dubbo支持多种协议 ?

1.基于TCP协议?Netty、Mina实现?

2.Dubbo协议 默认 ?

3. Hessian协议?

4. HTTP协议?

5. RMI协议?

6.?WebService协议??

7. Thrift协议?

8.?Memcached协议?

9.?Redis协议??

10.gPRC??

11.Http2.0?

Dubbo协议支持足够丰富 现在做分布式开发 Dubbo是非常优秀的分布式框架扩展 通信协议的支持已经在GRPC做的足够优秀 强大的地方在于做了大规模集群的服务治理 ?Dubbo不仅是一套思想 更是能落地且经过阿里大规模服务实践的落地检验。?

三 Dubbo默认协议??

1.?Dubbo?协议默认使用Hessian2 序列化。 说明 Hessian2 是阿里在 Hessian 基础上进行的二次开发 起名为Hessian2 ??

2.?rmi协议 默认为 java?原生序列?

3. http协议?默认为?json?

4. hessian 协议 默认是 hessian?序列化?

5.?webservice?协议 默认是 soap 文本序列化??

在局域网方面 Dubbo的原则协议已经足够优秀 多种协议的好处在于可灵活根据自己的场景定制选择 允许自定义 为更复杂高级的场景允许扩展的接口。?

四 Dubbo线程消息分发模型?

?Dispatcher 分发器??

? all, direct, message, execution, connection??

?ThreadPool?线程池??

? fixed, cached?

Dubbo线程消息分发模型就是客户端和和服务端进行通讯 另外里面涉及到消息体的问题 消息体占多大 作为消息封装框架要考虑功能及效率问题。?

五 Dubbo提供的注册中心??

Multicast注册中心?

2. Zookeeper注册中心??

3.?Redis注册中心??

4. Simple注册中心?


本文转自网络,原文链接:https://developer.aliyun.com/article/784833
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐