第1章 微服务架构简介 1
1.1常规微服务架构 2
1.2微服务架构的特征 2
1.2.1问题定义 2
1.2.2解决方案 3
1.3做好微服务架构面临的挑战 4
1.3.1通过日志调试 5
1.3.2服务监控 5
1.3.3公共库 5
1.3.4服务之间的消息传递 5
1.3.5微服务的部署和版本管理 6
1.4微服务的未来 6
1.4.1无服务架构 7
1.4.2微服务即PaaS 7
1.5与传统架构相比微服务架构的优势 7
1.6是不是看起来与SOA很像 9
1.7将业务领域划分为微服务组件 11
1.8到底要不要使用微服务 13
1.8.1组织认同度 13
1.8.2体验DevOps 14
1.8.3分析现有数据库模型 14
1.8.4自动化和CI/CD 14
1.8.5集成 14
1.8.6安全 14
1.8.7成功迁移的例子 15
1.9示例项目(信用风险评估引擎) 15
1.10 Spring 15
1.11 Spring Boot 16
1.12小结 19
第2章 定义微服务组件 21
2.1微服务的定义 21
2.2服务发现及其用途 22
2.2.1 DNS 22
2.2.2服务发现的请求 23
2.2.3服务发现模式示例 26
2.2.4整个架构中的配置外化 29
2.3 API网关及其诉求 32
2.3.1认证鉴权 33
2.3.2不同协议 34
2.3.3负载均衡 34
2.3.4请求转发(包括服务发现) 34
2.3.5响应转换 34
2.3.6断路器 35
2.3.7 API网关的优劣性 35
2.4 API网关的例子 36
2.5用户注册微服务的开发 39
2.6小结 59
第3章 微服务端点之间的通信 61
3.1微服务间应该如何通信 61
3.2编制和编排 62
3.2.1编制 62
3.2.2编排 63
3.3同步通信和异步通信 65
3.3.1同步通信 65
3.3.2异步通信 68
3.3.3财务服务 79
3.4小结 90
第4章 微服务端点的安全 91
4.1微服务的安全挑战 91
4.1.1复合技术栈或者存在遗留代码 92
4.1.2认证和授权(访问控制) 92
4.1.3基于令牌的安全实践 92
4.1.4安全性的责任 92
4.1.5编制风格的风险 92
4.1.6 微服务之间的通信 93
4.2与OpenID的OAuth 2.0一起使用J W T 94
4.2.1 Open I D 94
4.2.2 OAuth 2.0 95
4.2.3JWT 97
4.2.4 示例应用 99
4.3小结 111
第5章 创建高效的数据模型 113
5.1数据和建模 113
5.2单体架构中的数据模型 114
5.3SOA中的数据模型 115
5.4微服务架构中的数据模型 116
5.4.1每个微服务限定一些数据库表 116
5.4.2每个微服务一个数据库 117
5.4.3 Saga模式 117
5.4.4必要时采用混合数据技术 119
5.5从单体应用向微服务迁移数据模型 120
5.5.1领域驱动设计 120
5.5.2数据模型迁移方式 121
5.6小结 126
第6章 测试微服务 127
6.1微服务中测试的目的 127
6.2单元测试 128
6.3集成测试 131
6.4组件(服务)测试 131
6.5契约测试 133
6.5.1 Pact 133
6.5.2 Spring Cloud Contract 134
6.6端到端测试 135
6.7更进一步 135
6.8小结 136
第7章 部署微服务 137
7.1持续集成 137
7.2持续交付 138
7.3用微服务配置CI和CD工具 140
7.4微服务的Docker化 147
7.4.1Docker 148
7.4.2Docker引擎 148
7.4.3 Docker镜像 148
7.4.4 Docker存储 148
7.4.5 应用程序在Docker 中是如何工作的 149
7.4.6公共、私有和官方的镜像库 149
7.4.7 Docker与VM的区别 149
7.4.8在Linux 中 安装Docker 150
7.5在Docker化的微服务中使用开源CI工具 154
7.6小结 156
第8章 演进现有系统 157
8.1从哪里开始 159
8.1.1架构视角和最佳实践 159
8.1.2数据库视角和最佳实践 162
8.2示例应用及其演变过程 163
8.2.1用户管理服务 164
8.2.2购物车/订单服务 164
8.2.3支付服务 164
8.2.4配送/跟踪服务和通信服务 164
8.2.5产品推荐服务 165
8.2.6调度服务 165
8.3小结 166
第9章 微服务的监控和扩展 167
9.1微服务系统的监控原则 167
9.1.1如何设置并使用警报 168
9.1.2从一开始做好监控和发布渠道规划 168
9.1.3自动扩展和自动发现 168
9.1.4监控前门流量 169
9.2监控模式的发展变化 169
9.3日志记录有助于监控 170
9.4微服务系统的扩展原则 171
9.4.1 x轴 172
9.4.2 y轴 172
9.4.3z轴 173
9.5实施扩展策略前请三思 174
9.6微服务的监控和扩展工具 175
9.7小结 180
第10章 故障排除 181
10.1使用微服务时的常见问题 181
10.1.1性能下降 181
10.1.2日志记录位置因编程语言而异 183
10.1.3多组件之间的耦合或依赖问题 184
10.1.4服务部署数量与日俱增 184
10.1.5监控多项服务,发现性能下降或其他问题 185
10.1.6 日志与不同组件的关系 185
10.2常见问题的解决方法 186
10.2.1解决性能问题的步骤 186
10.2.2处理不同语言生成的并处于不同位置的日志记录 186
10.2.3服务之间的依赖关系 187
10.2.4 DevOps专家积极参与 187
10.2.5监控 188
10.3小结 189