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