基本概念
RPC(Remote Produce Call),过程远程调用,意为一个节点请求另一个节点的服务。
原理
Client端
- 将这个调用映射为Call ID。
- 将Call ID以及参数序列化,二进制打包。
- 将 2 中的数据包发送给 Server 端,使用网络传输层。
- 等待 Server 端返回结果。
- 如果 Server 端调用成功,就将结果反序列化,取想要的值。
Server端
- 在本地维护一个Call ID到函数指针的映射。
- 等待 Client 端请求。
- 得到请求后,将数据包反序列化,获取Call ID。
- 通过查找Call ID对应的映射,得到函数指针。
- 将数据包中的参数带入本地对应函数,得到结果。
- 将结果序列话后通过网络返回给 Client 端。
RPC的三个特点
- 需要事先约定调用的语义(接口语法)
- 需要网络传输
- 需要约定网络传输中的内容格式