RPC 快速扫盲

本文最后更新于 2025年7月23日 14:39

什么是 RPC

RPC(Remote Procedure Call)是一种通信协议,允许一个程序调用另一个程序(通常位于不同的机器或进程中)的函数或方法,就像调用本地函数一样。它的核心目标是隐藏网络通信的复杂性,让开发者专注于业务逻辑。

什么是 RPC 框架

RPC框架是实现RPC协议的工具集,它封装了以下功能:

1. 通信协议:定义数据如何传输(如HTTP、gRPC、TCP等)。

2. 序列化:将参数和返回值转换为字节流(如JSON、Protobuf)。

3. 服务发现:帮助客户端找到服务端的地址。

4. 负载均衡:在高并发场景下分配请求到多个服务实例。

5. 容错处理:处理网络超时、重试等问题。

常见的RPC框架

  • tRPC:腾讯开源的RPC框架,支持多语言(如Go、C++),适用于微服务场景。
  • gRPC:Google开发的跨语言RPC框架,基于HTTP/2和Protobuf。
  • Dubbo:Java生态的RPC框架,常用于分布式系统。

什么是桩代码 Stub Code

桩代码(Stub Code)是RPC(远程过程调用)框架中的一种自动生成的代码,用于简化客户端和服务端之间的通信。它主要分为两种类型:

1. 客户端桩代码(Client Stub):客户端通过调用本地桩代码方法,间接调用远程服务。桩代码负责将调用请求序列化为网络协议(如HTTP或gRPC),并发送到服务端。

2. 服务端桩代码(Server Stub):服务端桩代码接收客户端的请求,反序列化参数,并调用实际的服务实现方法,最后将结果序列化返回给客户端。

在tRPC框架中,桩代码通常通过工具(如**trpc-cmdline)根据.proto**文件自动生成,包含以下内容:

  • 客户端和服务端的接口定义。
  • 序列化和反序列化逻辑。
  • 网络通信的封装。

例如,在Go语言中,桩代码会生成**pb.go文件(协议缓冲区消息)和trpc.go**文件(tRPC服务接口),开发者只需关注业务逻辑的实现即可。


RPC 快速扫盲
http://example.com/2025/07/10/RPC 快速扫盲/
作者
Moonike
发布于
2025年7月10日
更新于
2025年7月23日
许可协议