辉夜的博客

繁花似锦,辉夜如昼

0%

gRPC调研报告

概览

框架名称 开发者 序列化协议 传输协议 支持语言 备注
gRPC google protobuf http2.0 多语言 没有服务治理功能,序列化效率最好,性能较高
rpcx portobuf+多种 Go服务+多语言客户 性能最高,
Thrift facebook bin(compact) json tcp:socket http:frame file 多语言 性能一般,缺乏技术文档
Motan Weibo json hessian2 tcp Java 基于Dubbo剪裁,擅长处理大批量负载
brpc Baidu protobuf C++

RPC简介,gRPC原理

gRPC

  • 优点

  • 微服务:gRPC 设计用于低延迟和高吞吐量通信。 gRPC 对于效率至关重要的轻量级微服务非常有用。

  • 网络带宽要求低:gRPC 消息使用 Protobuf进行序列化。 这种序列化方法的时空效率都要比json,thrift,hessian强

  • 多语言环境:gRPC 工具支持所有常用的开发语言(C++,Java,Python,Ruby,Go…)

  • 点对点实时通信:gRPC 对双向流式传输提供出色的支持。 gRPC 服务可以实时推送消息而无需轮询。

  • 缺点

  • 只有少数浏览器支持http2

  • 移动端网络可能在wifi及4G频繁切换,无法体现出长连接以及多路复用的优势

  • 相较于json,protobuf编码后数据可读性低

rpcx、

Thrift vs gRPC

  • 优点
  • 高性能,gPRC平均响应延迟差距在2倍左右
  • 序列化和传输层可拔插,提供了多种方法
  • 不足
  • 开发环境生态很差,缺乏说明文档和软件更新
  • 不擅长提供大量流式数据传输

Motan vs gPRC

  • 优点
  • 提供了服务治理功能
  • 极限情况下的最长响应时间很短
  • 不足
  • 序列化效率较低
  • 综合运行效率较低
  • 只支持Java语言

erpc