RPC(远程过程调用)全面解析
一、RPC基本概念
RPC(Remote Procedure Call)即远程过程调用,是一种允许分布式系统中不同进程或计算机之间通信的编程模型。它使开发者能够像调用本地函数一样调用远程服务,隐藏了底层网络通信的复杂性[2]。
二、核心工作原理
1. 客户端-服务器模型:
- 客户端发起请求,服务器接收并执行操作后返回结果[2]
- 客户端调用进程发送带有参数的调用信息到服务进程,然后等待应答[1]
2. 通信流程:
- 服务消费方(client)以本地调用方式调用客户端存根[5]
- 客户端存根将方法名、参数等打包并通过网络发送[5]
- 服务端解码后调用本地实际服务[5]
- 结果返回给客户端存根并最终传递给消费方[5]
3. 端口映射机制:
- RPC服务注册UUID和端口号[4]
- 客户端先查询端口映射器(如Windows 135端口)获取服务端口[4]
- 然后建立到实际服务端口的连接[4]
三、关键技术组件
1. 接口定义语言(IDL):
- 描述远程调用接口,确保客户端和服务器接口一致性[2]
2. 序列化/反序列化:
- 将参数和结果转换为网络可传输格式[2][6]
3. 传输协议支持:
- 可使用HTTP、TCP或UDP等协议[2]
- 如gRPC基于HTTP/2.0,Dubbo基于TCP[5]
4. 存根(Stub)机制:
- 客户端存根作为远程服务的本地代理[8]
- 负责网络通信细节处理[1]
四、RPC发展与应用
1. 历史沿革:
- 概念最早由Nelson在1981年提出[1]
- 1984年Birrell和Nelson应用于异构分布式系统[1]
- Sun公司和HP公司首先在UNIX系统中实现[1]
2. 主要实现标准:
- Sun公司最初提出,后被IETF ONC宪章修订为标准[1]
- 开放式软件基金会(OSF)的DCE成为最普遍实现[1]
3. 现代应用场景:
- 解决不同系统/组织间的通信需求[6]
- 支持计算能力横向扩展和分布式部署[6]
五、RPC与相关技术对比
1. RPC vs HTTP:
- RPC是思想概念,HTTP是实现方式之一[5]
- 不同层级,不具有直接可比性[5]
2. RPC vs IPC:
- IPC(进程间通信)包含LPC(本地)和RPC(远程)[1]
- LPC用于共享内存空间的任务通信[1]
六、RPC框架实现要点
1. 需要解决的关键问题:
- 代理问题:隐藏远程调用细节[5]
- 序列化问题:数据格式转换[5]
- 寻址问题:服务定位和连接建立[6]
2. 典型框架示例:
- 基于TCP的Dubbo[5]
- 基于HTTP/2.0的gRPC[5]
[1] 远程过程调用协议(信息传输协议)-百科
[2] 认识RPC | 青训营- 掘金
[4] 究竟什么是RPC?_rpc端口-CSDN博客
[5] RPC简介-CSDN博客
[6] 关于RPC的介绍-CSDN博客
[8] 远程过程调用(RPC)简介_rpc传递引用或者指针-CSDN博客