哈喽各位同学们大家好呀 小编今天带着开发者学院中课程“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思想也参考了经典分布式网络通信中的分包定义格式和思想规范。?
?
如上图所示 ?
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注册中心?
一、UDF的分类 UDF类型 描述 UDF User Defined Scalar Function 用户自定义标量...
因为公司进行系统的服务化拆分,导致模块骤增,随之而来配置文件管理难度也随之...
怎样免费申请 域名 空间?据了解吗,目前市面上比较知名的域名空间服务商,暂时...
有同学问:领导总让我们挖掘用户需求,咋个挖掘法?特别是手头还没什么数据,最多...
新 域名 后缀的产生,一方面满足了人们日益增长的域名需求,另一方面也顺应了个...
1 引言 遍历是指从某个节点出发,按照一定的的搜索路线,依次访问对数据结构中的...
随着信息技术快速发展与应用,产业数字化和智能化趋势正日益加深,企业信息安全...
1.我喝了那么多次优乐美奶茶,也没见周杰伦问我是他的谁 2.以后谁敢欺负我,就...
公司简介 北京才博教育科技有限公司自主开发了一套基于AI技术的口语学习工具,服...
云服务器 升级的价格? 云服务器 的升级费用主要是由其配置决定的,所需要的升级...