什么是RPC
RPC就是远程过程调用
RPC的作用
- 屏蔽远程调用和本地调用的区别,让我们感觉就是调用本地项目内的方法。
- 隐藏底层网络通信的复杂性,让我们更专注于业务逻辑。
RPC通信流程
一个完整的RPC会涉及哪些步骤呢?
在调用方程序中,RPC框架根据调用的服务接口提前生成动态代理实现类,并将其注入到声明了该接口的相关业务逻辑中。该动态代理实现类拦截所有的方法调用,在提供的方法处理逻辑中完成一整套的远程调用,并把远程调用结果返回给调用方。
RPC框架在方法处理逻辑中完成的远程调用步骤为:
- 序列化,将方法调用传入的参数对象转换为可以用TCP等网络协议传输的二进制数据。
- 编码,规定一个用于解析二进制数据的协议,按照协议规定的格式组织二进制数据。大多数协议会将数据分为消息头和消息体。
- 网络传输,通过网络将编码后的数据发送到服务提供方。
- 解码,服务提供方接收到数据之后按照约定的协议格式解析二进制数据。
- 反序列化,将解码后的二进制数据反序列化为调用的接口信息和参数对象等。
- 调用实际服务,根据反序列化得到的信息,调用实际服务,产生结果数据。
- 将结果序列化、编码之后传输回服务调用方,服务调用方进行解码、反序列化得到结果数据。
步骤的流程图如下: