远程过程调用(RPC)中stub术语的由来及本义与功能的关联
为什么stub术语会被用于RPC场景
stub(桩)这个术语在软件开发领域很早就被用来指代仅暴露接口定义、自身不实现核心业务逻辑的占位代码,核心作用是屏蔽底层实现差异,让调用方可以用统一的方式调用逻辑。
RPC框架的核心设计目标就是抹平本地调用和远程调用的差异,让开发者调用远程方法和调用本地方法的体验完全一致,不需要感知网络通信、序列化/反序列化这些底层逻辑,stub刚好承担了这个本地占位的角色:
- 客户端
stub:和远端服务暴露的方法签名完全一致,开发者本地调用的实际就是客户端stub的方法,它会自动完成参数序列化、网络请求发送、响应结果反序列化的工作,把本地调用转换成远程请求 - 服务端
stub(部分场景也叫skeleton骨架):负责接收客户端发来的请求,反序列化参数后调用本地真实的业务实现,再把返回值序列化后发回给客户端
stub本义和RPC功能的关联
stub的本义是「残根、存根、桩」,最常见的场景比如票据撕下有效部分后留存的存根、树木砍伐后留在地面的残桩,核心特征有两个:
- 它是完整实体的对应凭证/局部残留,本身不具备完整实体的核心功能
- 你可以通过它直接关联到对应的完整实体,不需要直接和完整实体打交道
这个特征刚好和RPC里stub的功能完全匹配:
- 本地的
stub就是远端完整服务的「存根/残桩」,它只有和远端服务一致的方法签名,本身不实现任何业务逻辑,相当于完整服务留在调用侧的一小截残留 - 调用方不需要直接对接远端服务,只要操作本地的
stub就能完成远程调用,和你拿着票据存根就能对应到完整票据的逻辑完全一致。你提到的维基百科定义里的「转换客户端与服务端之间传递的参数」,就是stub作为关联凭证的核心工作内容。
内容的提问来源于stack exchange,提问作者Zhu Li
相关产品推荐
相关产品推荐

