gRPC 学习
第 1 天:理解 gRPC 是什么,读 Introduction to gRPC 和 gRPC Documentation
理解 gRPC 是什么,读 Introduction to gRPC 和 gRPC Documentation
今日主题
理解 gRPC 是什么,读 Introduction to gRPC 和 gRPC Documentation
今天为什么学这个
这一天的主题不是孤立知识点,而是这条学习线里的一个关键节点。真正目标不是把术语记住,而是把它接到后面几天的实操和排障链路里。
今天至少要搞懂
- 理解 gRPC、REST、消息队列三者的模型差异
- 搞清 RPC、HTTP/2、Protobuf 在 gRPC 里的定位
- 明确 gRPC 为什么更适合内部服务间通信
建议实践
写下 gRPC、REST、消息队列三者的区别
推荐操作步骤
- 先把今天要读的资料快速过一遍,圈出不懂的术语和命令。
- 按今天的实践要求做一个最小可运行 demo,不要先追求完整项目。
- 把执行过程中看到的输入、输出、日志或截图整理到当天目录的笔记里。
- 对照完成标准做一次自测,确认不是“看懂了”,而是真的“跑通了”。
完成标准
你能解释为什么 gRPC 适合服务间通信
补充笔记
三者的核心区别在于:gRPC 和 REST 都主要是“服务直接调用”,而“消息队列”是“通过中间队列异步传递消息”。
| 项目 | gRPC | REST | 消息队列 |
|---|---|---|---|
| 本质 | RPC 调用 | 资源式 HTTP API | 异步消息传递 |
| 通信方式 | 同步为主,也支持流式 | 同步请求-响应 | 异步为主 |
| 协议 | HTTP/2 | 通常 HTTP/1.1 或 HTTP/2 | 依赖 MQ 协议和中间件 |
| 数据格式 | Protobuf | 通常 JSON | 任意消息体 |
| 性能 | 高,适合内部服务 | 一般,易调试易兼容 | 吞吐高,解耦强 |
| 可读性 | 较低,不适合直接人工查看 | 高,浏览器/Postman 友好 | 取决于消息内容 |
| 耦合方式 | 调用方依赖服务方接口 | 调用方依赖 HTTP API | 生产者和消费者解耦 |
| 典型场景 | 微服务内部通信 | 对外开放 API、前后端交互 | 异步任务、削峰填谷、事件驱动 |
| 可以这样理解: |
- gRPC:像“函数调用远程服务”,强调高性能、强类型、低延迟。
- REST:像“通过 URL 操作资源”,强调通用性、易理解、生态成熟。
- 消息队列:像“发消息到邮箱,别人稍后处理”,强调异步、解耦、可靠传递。 常见使用场景:
- 内部微服务通信:优先 gRPC
- 对外提供开放接口:优先 REST
- 下单后发短信、发邮件、生成报表:优先 消息队列 一句话总结:
- 要“立刻拿结果”用 gRPC 或 REST
- 要“先发出去,稍后处理”用 消息队列 gRPC 适合服务间通信,核心原因是它更符合“机器调用机器”的场景,而不是“人调用接口”的场景。 主要有这几个点:
- 性能高 gRPC 默认用 HTTP/2 + Protobuf。 Protobuf 是二进制格式,比 JSON 更小、更快;HTTP/2 支持多路复用,减少连接开销,所以很适合高并发、低延迟的内部调用。
- 接口约束强 gRPC 先用 .proto 定义服务和消息结构,再生成客户端和服务端代码。 这意味着接口是强类型、明确的,字段、方法、返回值都提前约定好,能减少“文档写的是一套,实际接口又是一套”的问题。
- 多语言协作方便 微服务体系里常常不同服务用不同语言实现。 gRPC 可以从同一份 .proto 生成 Go、Java、Python、Node.js 等多种语言代码,跨语言通信成本低。
- 更像本地调用 调用方式接近“调用一个远程函数”,比 REST 里手动拼 URL、处理 HTTP 方法、解析 JSON 更直接。 对内部服务开发来说,心智负担更低,开发效率更高。
- 天然支持流式通信 gRPC 不只是普通请求-响应,还支持:
- 服务端流
- 客户端流
- 双向流 这对日志流、实时推送、长连接数据同步这类服务间场景很有价值,REST 做起来通常更绕。
- 更适合可控的内部环境 gRPC 对浏览器、人工调试、开放生态不如 REST 友好,但服务间通信通常发生在内部网络中,调用双方都由团队控制。 这时“高性能、强约束、自动生成代码”的收益,比“人类可读、通用易调试”更重要。 一句话说就是: gRPC 适合服务间通信,因为内部服务更看重性能、类型安全、接口一致性和跨语言协作,而这些正是 gRPC 的强项。
建议产出物
- 一个可以反复运行的最小 demo
- 一页记录输入、输出和失败路径的 README 或笔记
- 一段“如果这是生产环境,我还缺什么”的复盘
今日复盘
- 今天真正搞懂了什么
- 哪一步最容易卡住
- 如果明天继续推进,下一步最该补什么