远程函数调用(RPC)
远程过程调用(RPC)是一种通信协议,允许一个计算机程序调用另一个计算机上的远程程序,就像调用本地程序一样。通过RPC,可以将网络通信细节抽象出来,实现分布式系统中不同节点之间的透明通信。
一次RPC的完整过程
- IDL文件:IDL通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信
- 生成代码:通过编译器工具把IDL文件转换成语言对应的静态库
- 编解码:从内存中表示到字节序列转换称为编码,反之为解码,也常叫做序列化和反序列化
- 通信协议:规范了数据在网络中的传输内容和格式,除必须的请求/响应数据外,通常还会包含额外的元数据
- 网络传输:通常基于成熟的网络库,用TCP/UDP传输
RPC的好处
- 单一职责,有利于分工协作和运维开发
- 可扩展性强,资源使用率更优
- 故障隔离,服务的整体可靠性更高
RPC关键指标
- 稳定性:通过熔断、限流、超时控制等方法保护调用方和被调用方,同时避免资源浪费和注意负载均衡问题。
- 易用性:将功能进行打包,实现一键配置基础依赖。
- 扩展性
- 观测性
- 高性能:运用连接池、多路复用、高性能网络库等技术手段实现高吞吐、低延迟。