RPC核心原理:组件与调用流程

RPC核心原理:组件与调用流程

RPC(Remote Procedure Call,远程过程调用)的核心价值是屏蔽网络通信的底层复杂性 ,让开发者调用远程服务的方法时,体验与调用本地方法完全一致。其实现可拆解为5个核心组件1个完整调用流程

一、RPC的5个核心组件

1. 客户端(Consumer)

发起远程方法调用的一方,即业务代码中"像调用本地方法一样"调用远程服务的主体。

2. 服务端(Provider)

提供远程方法实现的一方,即实际执行业务逻辑的主体。

3. 客户端Stub(Client Stub)

也称为"客户端代理",是RPC框架在客户端的核心封装:

  • 接收客户端的方法调用请求(方法名、参数等);
  • 将调用信息序列化为可网络传输的二进制数据;
  • 负责服务发现(通过注册中心获取服务端地址);
  • 将序列化后的消息发送给服务端。

4. 服务端Stub(Server Stub)

RPC框架在服务端的核心封装:

  • 接收客户端发送的二进制消息;
  • 将消息反序列化为Java对象(包含方法名、参数等);
  • 根据反序列化后的信息,调用服务端本地的业务方法;
  • 将方法执行结果序列化后返回给客户端。

5. 网络传输层

负责客户端与服务端之间的二进制数据传输:

  • 底层可基于Socket实现,但主流RPC框架(如Dubbo、gRPC)通常使用Netty(高性能NIO网络框架),以提升传输效率和稳定性。

二、RPC的完整调用流程

  1. 客户端发起调用:业务代码像调用本地方法一样,调用远程服务的接口方法。
  2. 客户端Stub处理请求
    • 拦截调用请求,提取方法名、参数等信息;
    • 将信息组装为可传输的结构体,并序列化为二进制数据;
    • 通过注册中心(如Nacos、Zookeeper)获取服务端的IP和端口。
  3. 网络传输:客户端Stub通过Netty等网络框架,将序列化后的消息发送给服务端。
  4. 服务端Stub处理请求
    • 接收二进制消息,反序列化为包含方法名、参数的Java对象;
    • 根据对象信息,调用服务端本地的业务方法。
  5. 服务端返回结果
    • 服务端Stub将方法执行结果组装为结构体,并序列化为二进制数据;
    • 通过网络传输层将结果发送回客户端。
  6. 客户端获取结果
    • 客户端Stub接收二进制消息,反序列化为Java对象;
    • 将结果返回给业务代码,完成整个远程调用。

补充:为什么需要Stub?

Stub的核心作用是**"解耦业务代码与网络细节"**:

  • 对客户端而言,无需关心序列化、服务发现、网络传输等底层逻辑,只需关注业务调用;
  • 对服务端而言,无需关心网络接收、反序列化等逻辑,只需专注于业务方法的实现。

这正是RPC能让远程调用像本地调用一样简单的关键。

相关推荐
星恒讯工业路由器19 小时前
5G FWA技术演进与趋势
网络·5g·信息与通信·4g·5g fwa·3gpp规范·fwa趋势
星夜夏空991 天前
网络编程(1)
服务器·网络
上海云盾-小余1 天前
中小站点防护避坑:低价高防服务存在的各类安全短板剖析
网络·爬虫·安全·ddos
X7x51 天前
跨厂商路由引入(重发布)实战指南:华为、华三、思科的逻辑差异与配置避坑
网络协议·信息与通信·信号处理·实施路由引入
数据知道1 天前
邮件安全实战:SPF/DKIM/DMARC 配置与钓鱼绕过
网络·安全·web安全·网络安全·邮件安全
玩转4G物联网1 天前
FS800DTU 新品上线|免费使用 DMP 设备管理平台,支持远程批量配置 & OTA 升级
物联网·网络协议·tcp/ip·云平台·核心板·fs800dtu·iot管理平台
王莎莎-MinerU1 天前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php
Chloeis Syntax1 天前
JAVAEE初阶 --- 构造HTTP请求
网络·网络协议·http·postman
砚凝霜1 天前
软考网络工程师|第 1 章 计算机网络基础 完整备考笔记
网络·笔记·计算机网络
rcms152702692181 天前
NIKON 4S019-394 接口模块
网络