RPC协议

rpc是远程程序调用,调用协议通常包含 1)传输协议 和 2)编码协议
传输协议(用于数据传输):grpc使用HTTP2协议,dubbo使用自定义报文的TCP协议,还有 MQ
编码协议(用于数据序列化):基于文本编码的xml、json,基于二进制编码protobuf等
这里写图片描述

feature1:

通用定义的 http1.1 协议的 tcp 报文中有效编码占比比较少,一个 POST 协议的格式大致如下:

上述的编码协议中只有body使用的是二进制编码协议,报文的元数据也就是header部分使用的依旧是文本编码。上图的报文中有效字节数占比为30%左右,实际的报文长度很长的时候,有效字节数占比会提高。在我们自定义tcp协议的 rpc 中,字节占比会高一些。不过,效率优势仅仅是针对 http1.1 而言的,http2.0中已经优化了编码效率的问题, grpc中使用的就是http2.0协议。

feature2:

成熟的 rpc库 相比于 http 容器,更多的是封装了“服务发现”、“错误重试”等一系列面向服务的高级特性。这些高级特性往往是由用户自己根据需求定制的。

猜你喜欢

转载自blog.csdn.net/vanturman/article/details/81672301