第1章 從Spring Boot開始 1
1.1 環境準備 1
1.1.1 安裝JDK 1
1.1.2 安裝Intellij IDEA 4
1.1.3 安裝Maven 4
1.1.4 Docker概述 5
1.2 Spring Boot簡介 14
1.3 第#一個Spring Boot項目 16
1.3.1 使用Spring Initializr新建項目 16
1.3.2 測試 18
1.4 Spring Boot目錄介紹 19
1.4.1 Spring Boot工程目錄 19
1.4.2 Spring Boot入口類 20
1.4.3 Spring Boot測試類 20
1.4.4 pom.xml文件 21
1.5 Spring Boot生產級特性 23
1.5.1 應用監控 23
1.5.2 健康檢查 26
1.5.3 跨域訪問 27
1.5.4 外部配置 28
1.6 Spring Boot原理解析 29
1.6.1 DemoApplication入口類 29
1.6.2 @SpringBootApplication的原理 29
1.6.3 SpringApplication的run方法 31
1.6.4 SpringApplicationRunListener監聽器 32
1.6.5 ApplicationContextInitializer接口 32
1.6.6 ApplicationRunner與CommandLineRunner 34
1.7 SpringApplication的執行流程 35
1.7.1 spring-boot-starter原理 36
1.7.2 Bean參數獲取 39
1.7.3 Bean的發現與加載 40
1.7.4 自定義starter 46
第2章 Spring Cloud/Spring Cloud Alibaba 52
2.1 Spring Cloud介紹 52
2.1.1 Spring Cloud的特性 52
2.1.2 Spring Cloud的模塊 53
2.1.3 Spring Cloud版本介紹 54
2.1.4 Spring Cloud與Spring Boot的關繫 55
2.2 Spring Cloud Alibaba簡介 55
2.2.1 Spring Cloud Alibaba的主要功能 55
2.2.2 Spring Cloud Alibaba組件 56
2.2.3 Spring Cloud Alibaba版本簡介 57
2.4 Netflix/Spring Cloud/Spring Cloud Alibaba的關繫 58
第3章 注冊中心/配置管理 59
3.1 Nacos簡介 59
3.2 Nacos快速開始 60
3.2.1 Nacos Server單機模式 60
3.2.2 Nacos Server集群模式 63
3.2.3 Nacos Nginx集群模式 66
3.3 Spring Boot注冊到Nacos 67
3.3.1 Nacos配置管理 67
3.3.2 Nacos服務注冊 69
3.4 Nacos Spring Cloud 70
3.4.1 Nacos配置管理 70
3.4.2 Nacos服務注冊 72
3.5 Nacos原理解析 75
3.5.1 Nacos配置中心原理分析 75
3.5.2 Nacos服務發現原理分析 84
3.6 Eureka服務發現 86
3.6.1 Eureka簡介 86
3.6.2 如何看待Eureka停產 88
3.6.3 搭建Eureka注冊中心 88
3.6.4 搭建Eureka注冊中心集群 92
3.7 Spring Cloud Consul 95
3.7.1 Consul簡介 95
3.7.2 Consul安裝與啟動 95
3.7.3 Consul服務注冊與發現 96
3.7.4 Consul配置中心 100
3.7.5 Consul簡單架構 103
3.8 Spring Cloud Config 104
3.8.1 Spring Cloud Config簡介 104
3.8.2 Spring Cloud Config快速入門 105
3.8.3 Spring Cloud Config配置中心原理 108
第4章 微服務網關 109
4.1 Zuul網關 109
4.1.1 Zuul概述 109
4.1.2 Zuul快速入門 110
4.1.3 Zuul路由配置 111
4.1.4 Zuul過濾器 112
4.1.5 管理端點 114
4.1.6 禁用Zuul過濾器 115
4.1.7 啟用Zuul跨域請求 115
4.1.8 Eureka整合Zuul 116
4.2 Spring Cloud Gateway 120
4.2.1 Gateway簡介 120
4.2.2 Gateway快速入門 121
4.2.3 Gateway路由斷言工廠 123
4.2.4 Gateway過濾器工廠 127
4.2.5 Gateway全局過濾器 128
4.2.6 Gateway跨域 131
4.2.7 Gateway Actuator API 132
4.2.8 HTTP超時配置 134
4.2.9 TLS / SSL設置 135
4.2.10 Gateway底層原理 136
4.3 Gateway與Zuul的區別 137
第5章 Ribbon負載均衡 138
5.1 Ribbon基礎知識 138
5.1.1 Ribbon簡介 138
5.1.2 負載均衡算法 140
5.1.3 第#一個Ribbon程序 144
5.2 Ribbon實戰 147
5.2.1 Ribbon自定義負載均衡策略 147
5.2.2 Ribbon饑餓加載 151
5.2.3 Ribbon默認配置 151
5.2.4 配置文件定義Ribbon客戶端 152
5.2.5 直接使用Ribbon API 153
5.2.6 Eureka/Nacos整合Ribbon 153
第6章 Spring Cloud OpenFeign聲明式調用 155
6.1 Spring Cloud Feign 155
6.1.1 Feign簡介 155
6.1.2 第#一個Feign程序 156
6.2 FeignClient詳解與配置 161
6.2.1 @FeignClient詳解 161
6.2.2 Feign Hystrix錯誤回退 166
6.2.3 Feign @QueryMap支持 167
6.2.4 HATEOAS支持 167
6.2.5 Spring @MatrixVariable支持 168
6.2.6 Feign繼承支持 168
6.2.7 Feign CollectionFormat支持 169
6.2.8 Feign請求響應壓縮 169
6.3 Feign日志配置 170
6.3.1 Java代碼方式 170
6.3.2 配置文件方式 171
6.3.3 全局日志配置 171
6.4 自定義處理 172
6.4.1 Feign自定義錯誤 172
6.4.2 Feign攔截器 176
6.4.3 自定義Feign客戶端 177
第7章 熔斷、限流、降級 179
7.1 Spring Cloud Hystrix 179
7.1.1 Hystrix簡介 179
7.1.2 Hystrix初體驗 182
7.1.3 Hystrix請求緩存 184
7.1.4 Hystrix請求合並 187
7.1.5 Hystrix默認配置 190
7.1.6 Hystrix配置詳解 191
7.2 Hystrix工作流程 194
7.3 Hystrix監控 196
7.3.1 Spring Boot應用配置Hystrix儀表板 197
7.3.2 Turbine集群監控 200
7.4 Sentinel 204
7.4.1 Sentinel簡介 204
7.4.2 限流算法 204
7.4.3 Sentinel項目結構 206
7.4.4 Sentinel與Hystrix的區別 207
7.4.5 Sentinel控制臺 207
7.4.6 客戶端接入控制臺 209
7.4.7 Sentinel微服務限流 210
第8章 Spring Cloud Bus消息總線 214
8.1 Kafka實現消息總線 214
8.1.1 Kafka概述 214
8.1.2 Kafka安裝 217
8.1.3 Docker安裝ZooKeeper和Kafka 219
8.2 Stream簡介 219
8.2.1 核心概念 219
8.2.2 Stream應用編程模型 220
8.2.3 Binder抽像 220
8.2.4 發布—訂閱 221
8.2.5 消費組 221
8.2.6 分區支持 221
8.2.7 健康指標 221
8.3 Spring Cloud Stream實戰 222
8.3.1 Stream快速入門 222
8.3.2 生產者的另一種實現 227
8.3.3 生產和消費消息 229
8.4 Bus簡介 232
8.4.1 Bus消息總線 232
8.4.2 Spring事件機制 232
8.4.3 Spring Cloud Bus實戰 235
8.4.4 Spring Cloud Bus原理 239
8.4.5 Spring Cloud Bus端點 240
8.4.6 Bus事件追蹤 240
第9章 Spring Cloud Alibaba Seata分布式事務 243
9.1 Seata基礎知識 243
9.1.1 Seata簡介 243
9.1.2 Seata部署 244
9.1.3 Seata原理與設計 246
9.2 Seata使用 247
9.2.1 數據庫準備 247
9.2.2 創建微服務 248
第10章 Spring Cloud Sleuth服務鏈路追蹤 257
10.1 Spring Cloud Sleuth簡介 257
10.2 Zipkin簡介 259
10.3 Spring Cloud Sleuth整合Zipkin 261
10.3.1 整合Zipkin 261
10.3.2 MySQL存儲鏈路數據 265
10.3.3 Sleuth抽樣采集 267
10.3.4 Trace和Span 268
10.4 Spring Cloud Sleuth整合ELK 271
10.5 Sleuth原理淺析 275
10.5.1 TraceId傳遞 275
10.5.2 spring.factories配置文件 276
10.5.3 TraceEnvironmentPostProcessor處理日志 278
10.5.4 TraceAutoConfiguration 279
10.5.5 TracingFilter過濾器 280
10.5.6 TraceWebClientAutoConfiguration 283
第11章 Spring Cloud Commons 286
11.1 Spring Cloud Commons簡介 286
11.2 Spring Cloud Context功能 286
11.2.1 bootstrap應用程序上下文 286
11.2.2 修改bootstrap.properties位置 287
11.2.3 覆蓋遠程屬性的值 287
11.2.4 自定義bootstrap配置 287
11.2.5 刷新範圍 288
11.2.6 加密與解密 288
11.2.7 Endpoints端點 288
11.3 Spring Cloud Commons功能 289
11.3.1 @EnableDiscoveryClient注解 289
11.3.2 服務注冊ServiceRegistry 290
11.3.3 多個RestTemplate實例 290
11.3.4 多個WebClient實例 291
11.3.5 忽略網卡 293
11.3.6 HTTP客戶端工廠 293
11.3.7 啟用功能特性 294
11.3.8 Spring Cloud兼容性驗證 295
11.4 Spring Cloud LoadBalancer 295
11.4.1 LoadBalancer簡介 295
11.4.2 Spring Cloud LoadBalancer緩存 296
11.4.3 Spring Cloud LoadBalancer Starter 296
11.4.4 自定義Spring Cloud LoadBalancer配置 297
11.5 Spring Cloud Circuit Breaker 297
11.5.1 Circuit Breaker介紹 297
11.5.2 核心概念 298
11.5.3 配置斷路器 299
11.6 具備緩存功能隨機數 300
第12章 Spring Cloud OAuth 2.0保護API安全 301
12.1 使用OAuth 2.0進行授權 301
12.1.1 OAuth 2.0簡介 301
12.1.2 OAuth 2.0協議流程 302
12.1.3 認證與授權 302
12.1.4 OAuth 2.0的授權方式 303
12.1.5 Spring Cloud Security OAuth 2.0認證流程 305
12.2 搭建OAuth 2.0服務 306
12.2.1 快速搭建OAuth 2.0服務 306
12.2.2 授權碼模式實現 308
12.3 JWT簡介 313
12.3.1 JWT的結構 313
12.3.2 JWT的應用 315
12.3.3 Spring Security OAuth 2.0 JWT應用 315
第13章 Spring Cloud組件容器化 336
13.1 Spring Boot項目容器化 336
13.1.1 制作鏡像 336
13.1.2 使用Dockerfile構建鏡像 338
13.1.3 Spring Boot集成Docker 341
13.2 Spring Cloud Alibaba組件容器化 345
13.2.1 Nacos Docker 345
13.2.2 Sentinel Docker 346
13.2.3 Seata Docker 346
第14章 使用Spring Cloud構建微服務綜合案例 348
14.1 案例介紹 348
14.2 技術選型 348
14.2.1 Spring Boot構建微服務 348
14.2.2 Nacos注冊/配置中心 350
14.2.3 Spring Cloud Gateway網關 352
14.2.4 OpenFeign服務調用 355
14.2.5 Ribbon負載均衡 355
14.2.6 Sentinel熔斷/降級/限流 356
14.2.7 ELK FileBeat日志繫統 357
14.2.8 Promethous Grafana InfluxDB監控繫統 359
14.2.9 SkyWalking鏈路追蹤繫統 363
14.3 總結 365
參考文獻 366