概览
框架名称 | 开发者 | 序列化协议 | 传输协议 | 支持语言 | 备注 |
---|---|---|---|---|---|
gRPC | protobuf | http2.0 | 多语言 | 没有服务治理功能,序列化效率最好,性能较高 | |
rpcx | portobuf+多种 | Go服务+多语言客户 | 性能最高, | ||
Thrift | bin(compact) json | tcp:socket http:frame file | 多语言 | 性能一般,缺乏技术文档 | |
Motan | 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语言