0x0 什么是RPC
RPC并不在本科计算机101核心课程中,但却是工业界十分常见的用于远程调用接口的一个中间件。
RPC(Remote Procedure Call)是在多服务器多模块接口之间起传输作用的网络传输工具,因为分布式作为提升服务性能的流行方案不同服务器上部署的接口无法使用内存交换数据,必须使用网络传送,所以RPC成为了分布式中的基础架构工具,能够减少组件之间的耦合。
一个RPC服务必须提供网络库以及编码/解码协议,以实现接口之间的数据传输。RPC相当于TCP/IP模型的应用层,RPC框架使用原应用层已有协议(如HTTP协议,或者复用HTTP框架实现网络资源池/连接复用等功能)传输或重新设计,并提供模型的序列化和反序列化协议,如gRPC使用Protobuf。接口通过RPC交换数据,就如同使用本地内存交换数据一般,但实际上RPC将交换细节对两个接口隐藏了。
0x1 主流RPC框架
| RPC | 开源情况 | 语言 |
|---|---|---|
| gRPC | 开源 | Golang开发/IDL |
| Apache Dubbo | 开源 | Java开发/Java |
| Apache Thrift | 开源 | C++开发/IDL |
| RPCX | 开源 | Golang开发/IDL |
| Spring Cloud | 开源 | Java开发/Java |
| TARS - Focus on Microservice Ecosystem (tarscloud.org) | 开源 | C++开发/IDL |