- 掌握gRPC核心通信模式:详解一元、服务器流、客户端流和双向流四种RPC模式,解决微服务间高效通信的设计难题。
- 理解gRPC底层原理:深入剖析Protocol Buffers编码、HTTP/2分帧与多路复用机制,解决“知其然不知其所以然”的问题。
- 实现生产级安全与可观测性:讲解TLS/mTLS认证、拦截器、截止时间、负载均衡及监控追踪,解决gRPC上线后的运维痛点。
- 打通云原生部署链路:演示如何将gRPC应用部署到Docker和Kubernetes,解决容器化环境下的集成与调试问题。
- 双语言实战落地:同时提供Go和Java代码示例,解决不同技术栈团队采用gRPC的迁移与开发障碍。
★★★
中级
入门初级中级进阶高级
- Go和Java后端开发者:需要构建高性能微服务通信层的工程师。
- 云原生应用架构师:负责设计基于Kubernetes的分布式系统的技术决策者。
- 微服务开发团队成员:正在将REST迁移到gRPC或评估通信框架选型的开发者。
- DevOps与SRE工程师:需要了解gRPC服务的部署、监控与故障排查。
- 先通读第1-3章:建立gRPC的基本认知,动手完成一个简单的Go或Java示例。
- 精读第4-5章:底层原理和高级特性是面试与架构设计的核心,建议配合抓包工具验证。
- 按需选读第6-8章:安全、部署和生态章节可根据实际项目需求选择性深入。
- 双语言对照学习:如果团队使用Go,可重点看Go示例;Java团队则反之,但建议都了解。
- 独立搭建gRPC服务:能用Go或Java从零构建包含多种通信模式的gRPC应用。
- 深入理解通信协议:掌握Protocol Buffers编码原理和HTTP/2在gRPC中的运用。
- 生产环境部署能力:能将gRPC服务容器化并部署到Kubernetes集群中运行。
- 安全与可观测性实践:能为gRPC服务配置TLS认证、拦截器和监控指标。
- 技术选型判断力:能对比gRPC与REST、Thrift、GraphQL的优劣并做出合理决策。
📖 书籍简介
内容介绍
本书全面介绍了gRPC,可作为终*指南,用于gRPC应用程序开发周期的各个阶段。本书的主要内容包括gRPC的基础知识;gRPC与常规进程间通信技术的区别;gRPC的通信模式、底层原理,以及一些非常重要的*级特性,如拦截器、截止时间、错误处理、元数据、多路复用、负载均衡等。此外,本书还介绍了如何使用Go语言和Java语言构建gRPC应用程序并使其在生产环境中运行,也讲解了gRPC如何与Docker和Kubernetes协作,以及其生态系统中的其他内容。本书广泛使用Go语言和Java语言编写代码示例,帮助读者掌握每个概念。
目录
译者序 ix
前言 xi
第 1章 gRPC入门 1
1.1 gRPC的定义 2
1.1.1 服务定义 3
1.1.2 gRPC服务器端 5
1.1.3 gRPC客户端 6
1.1.4 客户端–服务器端的消息流 7
1.2 进程间通信技术的演化 7
1.2.1 传统的RPC 7
1.2.2 SOAP 7
1.2.3 REST 8
1.2.4 gRPC的起源 9
1.2.5 选择gRPC的原因 9
1.2.6 gRPC与其他协议的对比:Thrift和GraphQL 11
1.3 现实世界中的gRPC 13
1.3.1 Netflix 13
1.3.2 etcd 14
1.3.3 Dropbox 14
1.4 小结 14
第 2章 开始使用gRPC 15
2.1 创建服务定义 16
2.1.1 定义消息类型 17
2.1.2 定义服务类型 18
2.2 实现 20
2.2.1 开发服务 21
2.2.2 开发gRPC客户端 29
2.3 构建和运行 33
2.3.1 构建Go服务器端应用程序 33
2.3.2 构建Go客户端应用程序 33
2.3.3 运行Go服务器端应用程序和客户端应用程序 34
2.3.4 构建Java服务器端应用程序 34
2.3.5 构建Java客户端应用程序 34
2.3.6 运行Java服务器端应用程序和客户端应用程序 35
2.4 小结 35
第3章 gRPC的通信模式 37
3.1 一元RPC模式 37
3.2 服务器端流RPC模式 40
3.3 客户端流RPC模式 42
3.4 双向流RPC模式 45
3.5 使用gRPC实现微服务通信 50
3.6 小结 52
第4章 gRPC的底层原理 53
4.1 RPC流 53
4.2 使用protocol buffers编码消息 55
4.3 基于长度前缀的消息分帧 60
4.4 基于HTTP/2的gRPC 61
4.4.1 请求消息 62
4.4.2 响应消息 64
4.4.3 理解gRPC通信模式中的消息流 66
4.5 gRPC实现架构 68
4.6 小结 69
第5章 gRPC:超越基础知识 71
5.1 拦截器 71
5.1.1 服务器端拦截器 72
5.1.2 客户端拦截器 76
5.2 截止时间 79
5.3 取消 82
5.4 错误处理 83
5.5 多路复用 86
5.6 元数据 89
5.6.1 创建和检索元数据 89
5.6.2 发送和接收元数据:客户端 90
5.6.3 发送和接收元数据:服务器端 92
5.6.4 命名解析器 93
5.7 负载均衡 94
5.7.1 负载均衡器代理 94
5.7.2 客户端负载均衡 95
5.7.3 压缩 97
5.8 小结 98
第6章 安全的gRPC 99
6.1 使用TLS认证gRPC通道 99
6.1.1 启用单向安全连接 100
6.1.2 启用mTLS保护的连接 103
6.2 对gRPC调用进行认证 107
6.2.1 使用basic认证 107
6.2.2 使用OAuth 2.0 112
6.2.3 使用JWT 115
6.2.4 使用基于令牌的谷歌认证 116
6.3 小结 117
第7章 在生产环境中运行gRPC 119
7.1 测试gRPC应用程序 119
7.1.1 测试gRPC服务器端 119
7.1.2 测试gRPC客户端 121
7.1.3 负载测试 122
7.1.4 持续集成 123
7.2 部署 123
7.2.1 部署到Docker上 123
7.2.2 部署到Kubernetes上 125
7.3 可观察性 130
7.3.1 度量指标 131
7.3.2 日志 138
7.3.3 跟踪 138
7.4 调试和问题排查 142
7.5 小结 143
第8章 gRPC的生态系统 145
8.1 gRPC网关 145
8.2 gRPC的HTTP/JSON转码 152
8.3 gRPC服务器端反射协议 152
8.4 gRPC中间件 155
8.5 健康检查协议 157
8.6 gRPC健康探针 159
8.7 其他生态系统项目 160
8.8 小结 161
关于作者 162
关于封面 162
作者介绍
卡山·因德拉西里(Kasun Indrasiri) WSO2公司集成架构总监,Apache PMC成员,拥有丰富的微服务架构经验,组建了旧金山湾区的大型微服务Meetup活动,另著有Microservices for the Enterprise。 丹尼什·库鲁普(Danesh Kuruppu) WSO2公司*级软件工程师,曾带领团队将gRPC集成到开源云原生编程语言Ballerina中,在gRPC社区中十分活跃。 【译者简介】 张卫滨 硕士,毕业于天津大学,具有十余年软件设计和开发经验,InfoQ网站社区编辑,热衷于研究开源技术,对Java、云原生、前端工程化、自动化测试等领域有着浓厚的兴趣,翻译出版了十多本畅销的技术书,包括《Spring实战(第5版)》《Spring Data实战》《RxJava反应式编程》。
关联推荐
高效构建微服务和分布式系统//谷歌加持,已被微软、思科、Netflix等公司采用//GitHub项目总星数近5万
📑 章节目录
- gRPC入门:定义、起源与进程间通信技术演化
- 开始使用gRPC:服务定义、实现与构建运行
- gRPC的通信模式:一元、服务器流、客户端流与双向流
- gRPC的底层原理:Protocol Buffers编码与HTTP/2
- gRPC进阶:拦截器、截止时间、取消与错误处理
- 安全的gRPC:TLS认证、OAuth 2.0与JWT
- 在生产环境中运行gRPC:测试、部署与可观察性
- gRPC的生态系统:网关、反射协议与健康检查
- gRPC与Kubernetes的深度集成实践
- 微服务架构中gRPC的最佳实践与案例分析