项目介绍
PRC 远程过程调用,是一种通过网络从远程计算机上请求服务,而不需要了解底层网络通信细节,PRC可以使用多种网络协议进行通信,如HTTP、TCP、UDP等,并且在TCP/IP网络四层模型中跨越了传输层和应用层。
简而言之PRC就是像调用本地方法一样调用远程方法
过程可以理解为业务处理、计算任务,更直白的说,就是程序/方法/函数等,就是像调用本地方法一样调用远程方法
我们用大白话来说:
- PRC就是让你像调用本地函数一样,去调用另一台服务器上的函数
- 本地调用:你的代码写 add(1,2),这是在你自己的电脑内存里面算出来的
- 远程调用:你写 add(1,2),这行代码实际上是把请求发送到了另一台电脑(服务器)上,那这台电脑算完后把结果传回给你。虽然代码写法几乎一样,但底层发生了网络通信
PRC核心流程图解(包裹快递版)
假设:你在北京(客户端),你的朋友在上海(服务端),你想让他帮你买一杯咖啡(远程调用函数)

阶段一:客户端准备(北京)
- 调用本地函数:你的脑子里想着"我要喝咖啡"
- 网络协议(打包) :你不能直接把"想喝咖啡"的脑电波发过去,你需要写一张纸条:"帮我买杯冰美式,钱在红包里面"。这个过程在PRC里叫反序列化(把对象变成二进制数据)。PRC框架就是那个帮你打包的快递员
- 操作系统内核/网络接口(发货):快递员把包裹交给顺丰的货车,货车开上高速公路。这对应图里底部的"操作系统内核"和"网络接口"
阶段二:网络传输(高速公路)
- 包裹在高速公路上飞驰。这就是图中间那条连接两边的长线。RPC 可以走 HTTP 公路,也可以走 TCP 专线
阶段三:网络服务器处理(上海)
- 操作系统内核/网络接口(收货):上海的顺丰货车收到包裹
- 网络协议(拆包): 上海的快递员把纸条拿出来,看懂了你需要"冰美式"。这个过程叫 反序列化
- **远程函数处理(执行):**你朋友拿着钱,真的跑去咖啡店买了一杯冰美式。这就是服务器真正执行了那段代码
阶段四:返回结果(回程)
-
网络协议模块(再打包):你朋友把咖啡装进保温箱,贴上回执单
-
操作系统内核/网络接口(回货):交给顺丰发回北京
-
客户端收到结果:你在北京收到咖啡,RPC 框架把结果交回给你的代码,你的代码继续往下执行
为什么需要"快递公司"(RPC框架)?
如果没有 RPC 框架(快递公司):
-
你需要自己造一辆车(写 TCP 连接代码)。
-
你需要自己学外语跟上海人沟通(处理网络字节序、协议解析)。
-
你需要自己记路(处理网络超时、断线重连)。