从 0 开始理解 RPC —— 后端工程师扫盲版

阅读目标:

看完之后你能回答 5 个问题:

  1. RPC 是什么
  2. 为什么需要 RPC
  3. RPC 和 HTTP / DI 的区别
  4. RPC 为什么会慢
  5. 我现在需要学到什么程度

一、RPC 是什么?

RPC(Remote Procedure Call)= 远程过程调用

一句人话解释:

像调用本地方法一样,去调用另一台服务器上的方法。

本地方法调用(不是 RPC)

java 复制代码
userService.getUser(1);

特点:

java 复制代码
同一个应用
同一个 JVM
同一块内存
没有网络

速度极快。

RPC 调用(远程)

代码看起来一样:

java 复制代码
userRpcService.getUser(1);

但实际发生:

java 复制代码
参数打包
↓
网络发送
↓
远端执行
↓
返回结果

中间多了一整套 网络通信流程。

二、为什么会有 RPC?

因为系统不再是一个大项目,而是拆成多个服务:

java 复制代码
用户服务
订单服务
支付服务
库存服务
积分服务

订单想查用户,就必须跨服务调用。

RPC 的出现,就是为了解决:

服务与服务之间如何通信。

三、RPC 在系统中的位置

java 复制代码
浏览器 → HTTP → 网关 → 服务A
                         ↓ RPC
                       服务B
                         ↓ RPC
                       服务C
  • HTTP:多用于 对外接口
  • RPC:多用于 内部服务通信

四、RPC 为什么代码看起来像本地调用?

因为框架用了 代理模式。

你写的是:

java 复制代码
UserService userService;

实际注入的是:

UserServiceProxy

代理对象在你调用时会:

  • 序列化参数
  • 发网络请求
  • 等结果
  • 反序列化返回

你以为是对象,其实是网络。

五、RPC 和 DI 的区别(扫盲重点)

很多人第一次学 RPC 都会产生错觉:

"这不就是依赖注入吗?"

写法确实像,但本质不同。

DI(依赖注入)

java 复制代码
同一个应用
同一个 JVM
没有网络

流程:

java 复制代码
Spring 创建对象 → 注入引用 → 直接执行

类比:
让隔壁同事递水。

RPC(远程调用)

java 复制代码
不同应用
不同 JVM
有网络

流程:

java 复制代码
代理拦截 → 序列化 → 网络 → 执行 → 返回

类比:
打电话叫外卖。

技术层面对比

维度 DI RPC
JVM 同一个 不同 JVM
网络 无 有
性能 极快 有延迟
序列化 否 是
失败概率 极低 需要考虑
超时/重试 不需要 必须考虑

六、RPC 框架是什么?

RPC 是一类框架,不是一个工具。

常见:

框架 背景
Dubbo 阿里
gRPC Google
Thrift Facebook
OpenFeign Spring 生态(HTTP 版 RPC)

你不用造 RPC,只需要会用。

七、RPC 为什么可能慢?

因为它是 网络调用。

常见慢的原因:

1. 网络延迟

跨机房、丢包

2. 序列化慢

JSON 大对象

3. N+1 问题

循环调用 RPC

4. 下游服务慢

数据库慢、锁等待

5. 线程池打满

请求排队

八、RPC 的典型风险

风险 说明
超时 服务无响应
雪崩 下游挂了拖死上游
N+1 循环调用
重试放大 一次变三次
线程阻塞 QPS 上不去

九、工程师需要掌握到什么程度?

你现在不需要:

  • 写 RPC 协议
  • 写 Netty
  • 写序列化框架

你需要:

java 复制代码
知道是什么
知道什么时候用
知道什么时候慢
知道如何判断

十、最小脑图理解

java 复制代码
RPC = 代理 + 序列化 + 网络 + 服务发现 + 负载均衡

十一、学习顺序建议

当前阶段优先级:

  1. SQL
  2. JVM
  3. 线程池
  4. Redis
  5. 接口设计
  6. RPC 使用
  7. 微服务治理

十二、终极一句话总结

RPC 是"假装本地调用"的远程网络调用。

写法像 DI,本质是网络。

你现在的目标不是造 RPC,

而是 会用、会判断、会优化。

相关推荐
发光小北1 小时前
四路can转WIFI在现场应用中有什么问题?
网络协议
不像程序员的程序媛2 小时前
检测网络的命令mtr详解
网络
天启HTTP2 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
运维行者_2 小时前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
hz567894 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
优橙教育4 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
AIgorithmGEEK5 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
物联网软硬件开发-轨物科技9 小时前
【轨物洞见】什么是产品碳足迹(PCF)?ISO 14067 计算方法与应用场景深度解读
大数据·网络·人工智能
姜鱼问生11 小时前
docker exec 排查容器问题:从日志到进程
运维·网络·数据库·docker·容器