第1章 微服务架构设计 1
1.1 直面微服务架构 1
1.1.1 分布式系统与微服务架构 1
1.1.2 微服务架构的优势与挑战 3
1.1.3 实施微服务架构 5
1.2 服务建模方法 6
1.2.1 服务的模型 6
1.2.2 服务的边界 7
1.2.3 服务的数据 7
1.3 服务拆分与集成 8
1.3.1 服务拆分 8
1.3.2 服务集成 9
1.4 微服务架构的基础组件和
关键要素 10
1.4.1 微服务架构的基础组件 11
1.4.2 微服务架构的关键元素 11
1.5 实现微服务架构 13
1.5.1 微服务架构技术体系 13
1.5.2 微服务架构实现技术选型 14
1.6 案例分析 17
1.7 全书架构 18
1.8 本章小结 19
第2章 使用Spring Boot构建
服务 21
2.1 引入Spring Boot 21
2.2 基于Spring Boot的第一个服务 23
2.2.1 环境准备 23
2.2.2 实现RESTful服务 24
2.3 Spring Boot常见功能 28
2.3.1 集成Spring Data 28
2.3.2 集成消息中间件 37
2.3.3 系统监控 39
2.4 Spring Boot基本原理 44
2.5 本章小结 46
第3章 Spring Cloud Netflix
Eureka与服务治理 47
3.1 服务治理解决方案 48
3.1.1 服务治理的需求和模型 48
3.1.2 服务治理的基本方案 49
3.2 构建Eureka服务 52
3.2.1 构建单个Eureka服务器 52
3.2.2 构建Eureka服务器集群 55
3.3 使用Eureka注册和发现服务 57
3.3.1 通过配置实现服务注册 58
3.3.2 获取服务注册信息 59
3.4 Eureka基本架构 61
3.4.1 Eureka服务注册和发现架构 61
3.4.2 Eureka高可用架构 64
3.4.3 Eureka区域亲和性 65
3.5 本章小结 66
第4章 Spring Cloud Netflix Ribbon
与负载均衡 67
4.1 负载均衡 68
4.1.1 负载均衡的类型 68
4.1.2 负载均衡的算法 70
4.2 使用Ribbon实现客户端负载均衡 71
4.2.1 Spring Cloud Netflix Ribbon
简介 71
4.2.2 使用DiscoveryClient查找服务 72
4.2.3 通过RestTemplate调用服务 74
4.3 Ribbon基本架构 78
4.3.1 Ribbon核心机制 79
4.3.2 Ribbon负载均衡策略 81
4.3.3 @LoadBalanced注解与
RestTemplate 82
4.3.4 @RibbonClient注解与自定义
负载均衡策略 83
4.4 本章小结 85
第5章 Spring Cloud Netflix
Hystrix与服务容错 86
5.1 服务消费者容错思想和模式 87
5.1.1 服务消费者容错的需求 87
5.1.2 服务隔离 88
5.1.3 服务熔断 90
5.1.4 服务回退 91
5.2 使用Hystrix实现服务容错 91
5.2.1 引入Hystrix 92
5.2.2 使用Hystrix实现服务隔离 93
5.2.3 使用Hystrix实现服务熔断 96
5.2.4 使用Hystrix实现服务回退 99
5.3 Hystrix基本原理 101
5.3.1 服务隔离 101
5.3.2 服务熔断 103
5.3.3 Hystrix配置项 105
5.4 本章小结 109
第6章 Spring Cloud Netflix Zuul
与API网关 110
6.1 服务网关的设计理念 111
6.1.1 服务网关的作用 111
6.1.2 服务网关的结构和功能 112
6.2 使用Zuul构建服务网关 113
6.2.1 构建Zuul服务器 113
6.2.2 配置Zuul服务路由 115
6.3 Zuul基本架构 120
6.3.1 ZuulFilter组件架构 120
6.3.2 使用Zuul过滤器 124
6.4 本章小结 129
第7章 Spring Cloud Config
与配置中心 130
7.1 分布式配置中心方案 131
7.1.1 分布式配置模型 131
7.1.2 配置中心实现工具 133
7.2 构建配置中心服务器 134
7.2.1 引入Spring Cloud Config 134
7.2.2 实现基于本地文件系统的
配置方案 135
7.2.3 实现基于Git的配置方案 139
7.3 使用配置服务 140
7.3.1 访问配置项 141
7.3.2 配置数据安全性 145
7.4 Spring Cloud Config特性 148
7.4.1 Spring Cloud Config对比
Zookeeper 148
7.4.2 Spring Cloud Config高可用 149
7.5 本章小结 150
第8章 Spring Cloud Stream与
事件驱动 151
8.1 事件驱动架构与模型 152
8.1.1 基本事件驱动架构与实现
机制 152
8.1.2 事件驱动与领域模型 155
8.2 引入Spring Cloud Stream 157
8.2.1 Spring Cloud Stream基本
架构 157
8.2.2 Spring Cloud Stream与Spring
Integration 159
8.2.3 Spring Cloud Stream与消息
中间件 162
8.3 实现消息发布者 165
8.3.1 消息发送场景与实现流程 165
8.3.2 在服务中添加消息发布者 166
8.4 实现消息消费者 170
8.4.1 消息消费场景与实现流程 170
8.4.2 在服务中添加消息消费者 172
8.5 本章小结 177
第9章 Spring Cloud Security与
服务安全 178
9.1 服务访问安全性与OAuth协议 178
9.1.1 微服务架构中的安全性设计 179
9.1.2 OAuth协议 180
9.2 构建OAuth认证服务器 184
9.2.1 引入Spring Cloud Security 185
9.2.2 初始化用户与客户端 186
9.2.3 生成Token 191
9.3 使用OAuth保护服务访问 195
9.3.1 集成OAuth认证服务 195
9.3.2 创建服务访问策略 196
9.3.3 使用OAuth2RestTemplate
传播Token 201
9.4 本章小结 206
第10章 Spring Cloud Sleuth与
服务监控 207
10.1 服务监控与Spring Cloud Sleuth 207
10.1.1 服务监控基本原理 207
10.1.2 引入Spring Cloud Sleuth 209
10.2 整合Spring Cloud Sleuth与
Zipkin 215
10.2.1 Zipkin基本结构 215
10.2.2 引入Zipkin 216
10.2.3 使用Zipkin跟踪服务调用
链路 218
10.2.4 使用Zipkin实现自定义
跟踪 226
10.3 本章小结 228
第11章 Spring Test与服务测试 230
11.1 微服务测试的方法 231
11.1.1 单元测试 231
11.1.2 集成测试 233
11.1.3 端到端测试 233
11.2 测试Spring Boot应用程序 234
11.2.1 初始化测试环境 234
11.2.2 执行单元测试 237
11.3 使用Mock和注解实施集成
测试 241
11.3.1 使用@JsonTest注解测试
JSON数据 242
11.3.2 使用@DataJpaTest注解测试
Repository层 244
11.3.3 使用Mock测试Service层 248
11.3.4 使用Mock和@WebMvcTest
注解测试Controller层 252
11.4 消费者驱动的契约测试 254
11.4.1 面向契约的端对端测试 254
11.4.2 实现面向契约的端对端
测试 257
11.5 本章小结 266
第12章 Docker与服务部署 267
12.1 Docker与微服务架构 267
12.1.1 Docker的优势 268
12.1.2 Docker组件与命令 268
12.2 使用Dockerfile构建服务镜像 272
12.2.1 Dockerfile命令 272
12.2.2 使用Dockerfile命令构建
镜像 273
12.3 使用Docker Compose编排
服务 276
12.3.1 Docker Compose组件与
命令 276
12.3.2 使用Docker Compose 279
12.3.3 Docker Compose案例分析 281
12.4 本章小结 283
参考文献 284