一、引言
针对gRPC和HTTP两种通讯协议,基于相同的数据集进行网络传输流量测试。
二、先说结论
gRPC传输所产生的流量远远小于JSON结构的HTTP。
协议 | 流量大小 | 平均耗时 |
---|---|---|
gRPC | 0.55MB | 240ms |
HTTP(JSON结构) | 1.4MB | 228ms |
HTTP(逗号拼接) | 0.56MB | 204ms |
三、结论分析
gRPC协议主要通过proto文件字段编号来标识传输内容,直接将对象内容转换成二进制数据传输,即gRPC的二进制传输机制。
HTTP在传输时,虽然也是将数据转换成二进制数据进行传输,但其中主流的做法都依赖于JSON或XML结构来进行序列化,因此产生许多额外的标识符,导致传输对象的体积增大,相应的产生更多流量传输。当改用逗号拼接的序列化方式,其传输产生的流量就和gRPC相差无几了,但这种方式需要自己维护一套序列化方式,其维护性和可靠性难以保障。
因此使用gRPC是可以减少传输体积并且保持可维护的手段之一,推荐使用!