全书目录

第二十五篇:gRPC 完全指南 —— 高速专线通信宇宙

第五章:gRPC 的高性能心智 —— 快,不是魔法,是一整套工程选择叠加出来的

2 分钟 714 字 第 454 / 962 个阅读单元

很多人把 gRPC 理解成:

  • “因为是二进制,所以快”
  • “因为是 HTTP/2,所以快”
  • “因为是 Google 出的,所以快”

都太浅。

gRPC 的性能心智,本质上来自下面几层叠加。

#1. Protobuf:货箱更小、解析更直接

在默认组合里,gRPC 常用 Protobuf 作为 IDL 和消息格式。

它的优势不是“神秘”,而是很工程化:

  • 二进制体积通常更紧凑
  • 强类型,字段明确
  • 代码生成后,读写路径很直接
  • 跨语言一致性强
text
JSON 更像:人眼容易读的纸面表格
Protobuf 更像:机器按标准尺寸封装好的货箱
#2. HTTP/2:一条专线里跑很多并发车道

HTTP/2 让同一条连接里能并发多个流,减少传统“开很多连接”的成本。

text
一条专线连接
├── Stream 1:查路线
├── Stream 2:推送路况
├── Stream 3:上传摄像头数据
└── Stream 4:双向调度指令

这带来的心智是:

gRPC 不是“一次请求开一条新路”,而更像“长期保留一条高质量专线,在上面复用很多车道”。

#3. 代码生成:少写胶水层,少犯低级错

REST 项目里,经常能看到这些重复劳动:

  • 手写 DTO
  • 手写序列化
  • 手写 URL
  • 手写参数映射
  • 手写接口文档同步

gRPC 把这层重复劳动前置进 .proto,然后让工具生成。

这不只是“省时间”,更重要的是:

减少系统之间因为人为拼接字符串、字段不一致、文档滞后导致的协作损耗。

#4. Streaming:持续传输,而不是假装所有通信都只有“一问一答”

真实世界的系统通信,很多不是“打一枪就走”:

  • 日志持续上报
  • 路况持续推送
  • 模型推理结果分块返回
  • 设备双向控制
  • 音视频、传感器、实时同步

gRPC 把“流”当成一等公民,这一点非常关键。

#5. 但要记住:高性能不是白送的

gRPC 并不代表:

  • 任何场景都比 REST 快
  • 浏览器里天然最好用
  • 调试一定最方便
  • 外部开放接口一定更合适

它更像高等级专线,不是万能交通工具。