市面上常见的RPC框架比较,以及如何选择

一、当前市面常见的RPC框架

rpcx grpc thrift dubbo Hprose Hession Motan Tars easyswoole swoft
服务端支持的语言 Go C/C++、C#、Go、PHP、Java、Python、Ruby 、Node.js、Objective-C、Dart C、C++、Go、PHP、Java、Python、Ruby、JavaScript、node.js、Perl、Lua、.net、Erlang、Rust、swift、Dart Go、Java、Erlang C++、Go、PHP、Java、Python、Ruby、JavaScript、Perl、Lua、node.js、.net、ASP、Dart C++、PHP、Java、Python、.net、Ruby、Erlang Java C++、Go、PHP、Java、Python、Node.JS PHP PHP
客户端支持的语言 C/C++、C#、Go、PHP、Java、Python、Node.js、Rust C/C++、C#、Go、PHP、Java、Python、Ruby 、Node.js、Objective-C、Dart C、C++、Go、PHP、Java、Python、Ruby、JavaScript、node.js、Perl、Lua、.net、Erlang、Rust、swift、Dart Go、Java、Erlang C++、Go、PHP、Java、Python、Ruby、JavaScript、Perl、Lua、node.js、.net、ASP、Dart C++、PHP、Java、Python、.net、Ruby、Erlang Java C++、Go、PHP、Java、Python、Node.JS PHP PHP
文档地址 rpcx.io grpc.io thrift.apache.org dubbo.apache.org hprose.com hessian.caucho.com motan TarsDocs easyswoole.com swoft.org

在前面三节中,我们了解了RPC框架的原理,但是实际工作中一般是不会真的自己写一个RPC框架的,先不说其中涉及的东西太多,单说稳定性就不能保证,相比之下,经过市场考验的各种RPC框架无疑是更好的选择。它们隐藏了实现细节,使内部实现对程序员透明,直接使用即可。

当然,有闲暇时可以研究几个RPC框架的源码实现就更好了。

 

二、如何选择

单从性能来讲,rpcx 是要超过其他rpc框架一筹的,但是缺点是服务端仅支持Go语言。

但实际应用中,我们更多的是要考虑后续兼容性,因此服务端绝不能只支持一种程序语言,至少Go、PHP、Java、Python这四种语言都要支持。这样选择范围其实已经缩小很多了,其中最优秀、应用也比较广泛的有grpc、thrift、Hprose、Tars。

至于如何选择还要看公司自己的技术栈以及技术人员总体水平,就比如公司只有PHP一种语言,不选择上面的,就选择Yar也未尝不可,或者公司只有Java和Go两种语言,那就选dubbo也未尝不可。