一、当前市面常见的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也未尝不可。