rpc中的stub学习

转自:https://www.jianshu.com/p/9ccdea882688

https://blog.csdn.net/soulofball/article/details/110087898, https://blog.csdn.net/kellypipe/article/details/121253359

1.RPC

 RPC(RemoteProcedureCall),是进程间通信(IPC,Inter-Process Communication)的一种技术,一般指不同机器上的进程间通信。RPC也可以称为远程方法调用(RemoteMethodInvocation)。

2.过程

  • Client向ClientStub发送请求(Call)。
  • ClientStub对请求参数进行封包(也叫Marshalling),发出系统调用,OS向S端发送消息。客户端存根:存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
  • S端接收到消息后,把封包消息传递给ServerStub。ServerStub解包(UnMarshalling)。服务端存根:接收客户端发送过来的消息,将消息解包,并调用本地的方法。
  • ServerStub调用S端的子程序。处理完毕后,以同样的方式向C端发送结果。

Stub是一段代码,用来转换RPC过程中传递的参数。处理内容包括不同OS之间的大小端问题。另外,Client端一般叫Stub,Server端一般叫Skeleton

生产方式:1)手动生成,比较麻烦;2)自动生成,使用IDL(Interface Description Language)接口描述语言,定义C/S的接口。

服务调用过程中,真正的方法逻辑存在于服务端中,那么客户端 保存就是服务端真实方法的一个存根(也可以认为是服务端的代理,存放服务端的地址等信息);即当客户端需要远程访问服务端方法的时候, 就可以凭借 服务端在客户端中的存根来组装发起远程调用所需要的信息;

 

posted @ 2022-07-21 23:53  lypbendlf  阅读(258)  评论(0编辑  收藏  举报