RPC的一种实现思路
RPC的一种实现思路
RPC(Remoet Procedure Call)是指运行一段代码,可以远程调用一个函数,获得计算结果后返回。我在学习Raft算法的Rust实现时,课程提供方基于channel
实现了一种简单的RPC,以下是我学习之后的一个简单总结。
大概思路如下:
- 先定义一个函数的输入及输出类型,并实现序列化和反序列化。
- 定义一个网络中心Net,主要负责:创建client,在创建时同时创建(sender, reciever),并将reciever给予client, 而sender在收到调用通知时给予server。
- 在server端实现调用函数的主体部分,并返回定义好的输出类型。
- 开始运行时,网络中心Net最先启动,然后创建client,并监听client发来的调用请求,然后调用相应的server函数,运行结束后用对应的sender返回结果。
我觉得如果基于HTTP之类的协议,实现似乎更简单,因为不需要创建各种channel
, 只需client发送正确的函数名和输入参数,server收到后调用并返回结果即可。