1. 课程导论
在微服务架构与分布式系统设计中,接口通信协议的选择直接影响系统的性能、可维护性与团队协作效率。REST API 凭借其简洁的 HTTP 语义和广泛的生态支持,长期占据主导地位;而 gRPC 凭借高性能二进制传输、强类型契约和双向流能力,正在成为新一代服务间通信的首选。然而,两者并非简单的替代关系,而是各有适用场景。
本课程旨在帮助后端架构师、API 设计者与技术决策者,系统性地掌握两种接口范式的核心差异、选型依据与实战落地方法。
1.1 为什么需要对比 gRPC 与 REST API?
错误的接口选型会导致以下典型问题:
- 性能瓶颈:在低延迟、高吞吐场景下,REST 的 JSON 序列化与 HTTP/1.1 队头阻塞成为短板。
- 开发效率下降:缺乏强类型契约,客户端与服务端接口不一致难以在编译期发现。
- 运维复杂度增加:流式数据处理、长连接推送等需求在 REST 中实现成本高。
- 团队协作摩擦:接口文档维护滞后,多语言客户端代码重复编写。
通过系统对比,你可以在以下关键维度做出理性决策:
| 对比维度 | REST API | gRPC |
|---|---|---|
| 传输协议 | HTTP/1.1(主流),HTTP/2(部分支持) | HTTP/2(强制) |
| 数据格式 | JSON / XML(文本,可读性强) | Protocol Buffers(二进制,紧凑高效) |
| 接口契约 | OpenAPI / Swagger(文档驱动) | Proto 文件(代码生成,强类型) |
| 通信模式 | 请求-响应(Unary) | Unary、Server Streaming、Client Streaming、Bidirectional Streaming |
| 浏览器支持 | 原生支持 | 需 gRPC-Web 代理 |
| 生态成熟度 | 极高,工具链丰富 | 快速增长,云原生生态紧密集成 |
核心洞察:REST 更适合面向外部客户端的 API(如 Web、移动端),而 gRPC 更适合内部服务间通信(微服务网格、实时数据管道)。
1.2 课程目标
完成本课程后,你将能够:
- 理解底层原理:掌握 HTTP/2 多路复用、Protobuf 序列化、流式 RPC 等核心技术。
- 掌握选型框架:从性能、开发效率、运维成本、团队能力等维度建立决策矩阵。
- 实战落地:独立完成 gRPC 服务端/客户端开发、REST API 设计优化、以及混合架构(gRPC + REST 网关)的搭建。
- 规避常见陷阱:识别超时处理、负载均衡、版本兼容、错误处理等生产环境中的典型问题。
1.3 学习路径概览
本课程共 30 章,分为四个阶段:
1.4 前置知识要求
- 熟悉至少一种后端编程语言(Java、Go、Python 或 Node.js)。
- 了解 HTTP 协议基本概念(请求/响应、状态码、头部)。
- 有基本的微服务或分布式系统认知(非必须,课程会补充)。
💡 提示:本课程不要求你精通 REST 或 gRPC,但建议在开始前先搭建好开发环境(JDK 17+ 或 Go 1.20+、Protobuf 编译器、Postman/gRPCurl)。