什么是 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 包含了 HTTP2 的优点,所以他的传输效率比 HTTP1 更高~
性能消耗
RPC 包含 HTTP2 的优点,比如二进制传输、头部压缩等,所以性能消耗自然比 HTTP1 低~
负载均衡
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": {{要调用的方法名称}},
"params": {{方法所需的参数}},
"id": {{请求的唯一标识符}}
}
- 第五步:单击 Send 按钮发送请求。如果一切正常,你将在响应面板中看到 JSON 格式的响应数据。
在这个例子中,我们调用名为 echo 的方法,并提供一个对象作为参数。请求的唯一标识符为 123。
使用 Apifox 发送 JSON-RPC 接口
使用 Apifox 也能发送 JSON-RPC 接口,并且 Postman 到 Apifox 几乎是无缝衔接的,且 Apifox 支持中文显示,非常方便上手~
Apifox
关于 Apifox
Apifox 是一体化 API 协作平台,可以实现 API 文档、API 调试、API Mock、 API 自动化测试,是更先进的 API 设计/开发/测试工具。Apifox 提供了一种全面的 API 管理解决方案。使用 Apifox ,你可以在统一的平台上设计、调试、测试以及协作你的 API,消除了在不同工具之间切换和数据不一致的问题。 简化了你的 API 工作流,并确保了前端、后端和测试人员之间的高效协作。