这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
定义
RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。 它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。
RPC 的主要目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。 为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。
RPC 原理
RPC 的主要原理是让远程服务的调用看起来像本地服务的调用,使得分布式系统间的调用过程更加简单、直观、快速。具体来说,RPC 协议的实现流程如下:
- 客户端通过调用本地 Stub(桩)代理对象的接口方法,传入参数。
- Stub 对象将参数序列化,并组装成合适的 RPC 请求格式。
- 请求数据通过网络传输到服务端。
- 服务端接收到请求数据后,通过解析数据,得到请求信息,并将请求信息反序列化为方法参数。
- 服务端调用本地服务方法,处理请求,并返回结果。
- 返回结果被序列化为响应数据,并通过网络传输到客户端。
- 客户端接收到响应数据后,通过解析数据,得到返回值。
通过 RPC 协议,客户端与服务端之间的通信可以像本地调用一样,无需了解底层通信细节。
RPC优势
简单:RPC 概念的语义十分清晰和简单,这样建立分布式计算就更容易。
高效:过程调用看起来十分简单而且高效。
通用:在单机计算中「过程」往往是不同算法部分间最重要的通信机制。
RPC 框架的核心指标
-
稳定性
-
保障策略
- 熔断
- 限流
- 超时
-
请求成功率
- 负载均衡
- 重试
-
长尾请求
- BackupRequest
-
-
易用性
- 开箱即用
- 周边工具
- 扩展性
-
观测性
- Log
- Metric
- Tracing
- 内置观测性服务
- 高性能