RPC协议
远程过程调用, 计算机通信协议,允许运行于一台机器上的程序调用网络中另外一台机器的子程序
为什么选择RPC
- 提高开发效率,开发人员可以把更多精力放在具体的接口实现,而不必考虑数据的底层传输问题。
- 大多数rpc框架都是很多优秀开发人员的智慧结晶,它们的功能实现和执行效率都很优秀。
- client端和server端必须遵循统一的接口规范,避免产生client和server之间接口或数据局结构不匹配的情况。
区别
- Grpc
- Grpc 是高性能,通用的开源RPC框架,基于HTTP/2协议标准
- Grpc 以protobuf作为LDL(接口描述语言),通过protoc来编译框架代码
- 支持 C, C++, Node.js, Python, Ruby, Objective-C,PHP and C#
- Thrift
- Thrift是一种可伸缩的跨语言服务的RPC软件框架。它结合了功能强大的软件堆栈的代码生成引擎,以建设服务,高效、无缝地在多种语言间结合使用
- Thrift 以thrift 作为LDL
- 支持C、C++ 、C# 、D 、Delphi 、Erlang 、Go 、Haxe 、Haskell 、Java 、JavaScript 、node.js 、OCaml 、Perl 、PHP 、Python 、Ruby 、SmallTalk
- 使用Thrift:Hadoop、HBase、Cassandra、Scribe、LastFM、Facebook、 Evernot
如何选择
- 什么时候应该选择gRPC而不是Thrift
- 需要良好的文档、示例
- 喜欢、习惯HTTP/2、ProtoBuf
- 对网络传输带宽敏感
- 什么时候应该选择Thrift而不是gRPC
- 需要在非常多的语言间进行数据交换
- 对CPU敏感
- 协议层、传输层有多种控制要求
- 需要稳定的版本
- 不需要良好的文档和示例