一文快速读懂RPC接口的定义原理与使用场景
时间:2026-06-13 15:43
聊聊 RPC:从概念到实战,一篇讲透远程过程调用 谈到分布式系统架构,RPC(远程过程调用)几乎是一个无法回避的核心概念。许多刚接触微服务的开发者,面对琳琅满目的框架和协议,常常感到困惑。本文将从最基础的定义入手,逐步拆解 RPC 究竟是什么、具备哪些特征,以及它与 HTTP 的本质区别,最
### 聊聊 RPC:从概念到实战,一篇讲透远程过程调用
谈到分布式系统架构,RPC(远程过程调用)几乎是一个无法回避的核心概念。许多刚接触微服务的开发者,面对琳琅满目的框架和协议,常常感到困惑。本文将从最基础的定义入手,逐步拆解 RPC 究竟是什么、具备哪些特征,以及它与 HTTP 的本质区别,最后通过实际工具演示如何调用 JSON-RPC 接口,让你轻松掌握 RPC 的落地使用。
什么是 RPC 呢?
RPC 的全称是 Remote Procedure Call Protocol,中文名称为远程过程调用协议。
通俗来讲,它的核心思想是:客户端在完全不了解底层通信细节的情况下,调用位于远程计算机上的某个对象或方法,就像调用本地应用程序中的对象一样。你无需关心网络如何传输、数据如何打包,只需像调用本地函数一样传递参数并获取结果即可。
更严谨的官方定义是:一种通过网络从远程计算机程序上请求服务,且不需要了解底层网络技术的协议。
RPC 有哪些特点呢?
- **RPC 是一种协议**。常见的 RPC 实现包括:`Dubbo、Thrift、gRPC、Netty` 等。
- **网络协议和网络 IO 模型对其透明**。RPC 的客户端自认为是在调用本地对象,因此它对使用的网络协议(例如 HTTP)以及网络 IO 模型并不关心。
- **信息格式对其透明**。调用方法需要传递参数,对于远程调用而言,参数在传输过程中的信息格式如何构成,以及服务提供者如何使用这些参数,调用方都无需关注。
- **具备跨语言能力**。调用方并不知道远程服务器端应用程序使用什么语言开发。因此,无论服务端采用何种语言,本次调用都应当成功,并且返回值也应按照调用方程序语言所能理解的形式进行描述。
哪些框架支持 RPC?
Thrift
Thrift 是一个软件框架,用于开发可扩展且跨语言的服务,支持 `C++、Java、Python` 等多种编程语言。
Dubbo
一个分布式服务框架及 SOA 治理方案。其功能主要包括:高性能 NIO 通讯及多协议集成、服务动态寻址与路由、软负载均衡与容错、依赖分析与降级等。
Spring Cloud
提供了搭建分布式系统及微服务常用的工具,能够满足构建微服务所需的所有解决方案。
gRPC
最初由 Google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。
RPC 与 HTTP 的对比
实际上,RPC 与 HTTP 并不在同一层级。真正有意义的对比,应该是 RPC 与 HTTP + RESTful 这一组合。
深入了解:HTTP 与 RPC 接口区别
传输协议
RPC 可以基于 HTTP 或 TCP 进行传输,而 HTTP 只能基于 HTTP 协议本身。
传输效率
RPC 集成了 HTTP/2 的优势,因此传输效率通常高于 HTTP/1.1。
性能消耗
RPC 包含 HTTP/2 的优点,例如二进制传输、头部压缩等,性能消耗自然比 HTTP/1.1 更低。
负载均衡
RPC 框架基本都自带负载均衡策略,而 HTTP 通常需要额外配置 Nginx 或 HAProxy 来实现。
服务治理
RPC 能够实现自动通知,不会影响上游服务;而 HTTP 需要事先通知,并手动修改 Nginx 或 HAProxy 配置。
JSON-RPC 接口
JSON-RPC 是一种轻量级的 RPC(远程过程调用)协议,它可以使用 HTTP 协议进行通信,并以 JSON 格式传输数据。Postman 作为一款流行的 API 开发工具,可以轻松地用于测试和调用 JSON-RPC 接口。
使用 Postman 发送 JSON-RPC 接口
以下是使用 Postman 调用 JSON-RPC 接口的详细步骤:
- 第一步:打开 Postman,创建一个新的 HTTP 请求。
- 第二步:在请求面板中,将 HTTP 方法选择为 POST。
- 第三步:输入 JSON-RPC 接口的 URL 地址。
- 第四步:在 Body 选项卡中选择 raw - JSON,然后输入以下格式的 JSON 数据:
{
"jsonrpc": "2.0",
"method": "echo",
"params": {"message": "hello"},
"id": 123
}
- 第五步:单击 Send 按钮发送请求。如果一切正常,你将在响应面板中看到 JSON 格式的响应数据。
在这个示例中,我们调用名为 echo 的方法,并提供一个对象作为参数,请求的唯一标识符设置为 123。
Postman