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 课程目标

完成本课程后,你将能够:

  1. 理解底层原理:掌握 HTTP/2 多路复用、Protobuf 序列化、流式 RPC 等核心技术。
  2. 掌握选型框架:从性能、开发效率、运维成本、团队能力等维度建立决策矩阵。
  3. 实战落地:独立完成 gRPC 服务端/客户端开发、REST API 设计优化、以及混合架构(gRPC + REST 网关)的搭建。
  4. 规避常见陷阱:识别超时处理、负载均衡、版本兼容、错误处理等生产环境中的典型问题。

1.3 学习路径概览

本课程共 30 章,分为四个阶段:

课程学习路径图 阶段 1:基础篇 第 1-8 章 协议原理 · 核心概念 阶段 2:实战篇 第 9-16 章 服务开发 · 客户端调用 阶段 3:进阶篇 第 17-24 章 流式通信 · 安全 · 网关 阶段 4:架构篇 第 25-30 章 选型决策 · 混合架构 关键知识点 • HTTP/2 多路复用 • Protobuf 语法 • REST 设计原则 • 接口契约对比 关键知识点 • gRPC 服务定义 • 客户端代码生成 • REST 控制器实现 • 单元测试与 Mock 关键知识点 • 流式 RPC 模式 • TLS/mTLS 安全 • gRPC-Web 网关 • 负载均衡策略 关键知识点 • 选型决策矩阵 • 混合架构设计 • 迁移策略 • 生产运维 📌 学习建议 • 每章包含理论讲解 + 可运行代码示例,建议边学边练。 • 第 8、16、24、30 章为综合实战项目,串联前序知识点。 • 如果你已有 REST 开发经验,可直接从第 5 章(gRPC 入门)开始。 • 所有代码均提供 Java(Spring Boot)和 Go 两种语言实现。

1.4 前置知识要求

  • 熟悉至少一种后端编程语言(Java、Go、Python 或 Node.js)。
  • 了解 HTTP 协议基本概念(请求/响应、状态码、头部)。
  • 有基本的微服务或分布式系统认知(非必须,课程会补充)。
💡 提示:本课程不要求你精通 REST 或 gRPC,但建议在开始前先搭建好开发环境(JDK 17+ 或 Go 1.20+、Protobuf 编译器、Postman/gRPCurl)。

1.5 本章小结