Dubbo框架的封装思想及RPC协议标准是怎样的?
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除了自定义协议的设计思想外,也和其他几个典型聊天软件已对比,有的用标准协议,有的自定义协议,自定义协议封闭性更强效率更高,行业标准协议考虑跨平台的通用性及安全性问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。