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的接口。
服务调用过程中,真正的方法逻辑存在于服务端中,那么客户端 保存就是服务端真实方法的一个存根(也可以认为是服务端的代理,存放服务端的地址等信息);即当客户端需要远程访问服务端方法的时候, 就可以凭借 服务端在客户端中的存根来组装发起远程调用所需要的信息;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)