RPC的一种实现思路

RPC(Remoet Procedure Call)是指运行一段代码,可以远程调用一个函数,获得计算结果后返回。我在学习Raft算法的Rust实现时,课程提供方基于channel实现了一种简单的RPC,以下是我学习之后的一个简单总结。

大概思路如下:

  1. 先定义一个函数的输入及输出类型,并实现序列化和反序列化。
  2. 定义一个网络中心Net,主要负责:创建client,在创建时同时创建(sender, reciever),并将reciever给予client, 而sender在收到调用通知时给予server。
  3. 在server端实现调用函数的主体部分,并返回定义好的输出类型。
  4. 开始运行时,网络中心Net最先启动,然后创建client,并监听client发来的调用请求,然后调用相应的server函数,运行结束后用对应的sender返回结果。

我觉得如果基于HTTP之类的协议,实现似乎更简单,因为不需要创建各种channel, 只需client发送正确的函数名和输入参数,server收到后调用并返回结果即可。