在计算机术语中,RPC 指的是 Remote Procedure Call(远程过程调用) 。它是一种进程间通信(IPC)机制,允许程序在不同的计算机或不同的进程上调用函数或方法,就像调用本地函数一样,而不需要关心底层的网络通信细节。
我给你分几个关键点解释:
1️⃣ 基本概念
- 远程:调用的函数可能在另一台机器上或另一进程中。
- 过程调用:程序调用一个函数,获取结果。
- 透明性:调用方感觉像调用本地函数一样,但实际上网络或跨进程在背后完成了通信。
2️⃣ 工作原理
RPC 的流程一般如下:
- 客户端调用本地的"代理函数"(stub)。
- 代理函数打包参数(序列化)成消息,通过网络发送到远程服务器。
- 服务器端接收消息,反序列化得到参数。
- 服务器调用实际函数,执行逻辑,得到结果。
- 服务器序列化返回值,发回客户端。
- 客户端反序列化返回值,得到结果,调用完成。
⚡ 总结:RPC 把"跨网络调用函数"的复杂过程封装起来,让开发者感觉像调用本地函数。
3️⃣ RPC 的典型应用
- 分布式系统:微服务之间的通信。
- 数据库远程访问。
- 云服务调用(例如 AWS Lambda 调用外部服务)。
- 各种客户端-服务器架构。
4️⃣ 常见的 RPC 框架 / 协议
- gRPC(Google 开发,支持多语言)
- Thrift(Apache 项目)
- JSON-RPC / XML-RPC(基于文本的轻量级 RPC)
- Dubbo(阿里巴巴开源的 RPC 框架,Java 生态)
简单理解:RPC 就是让"远程的函数"调用像本地函数一样简单,底层通过网络、序列化、反序列化、代理函数来实现。