Spring Boot + Spring Cloud + Spring Cloud Alibab 微服務訓練營

Spring Boot + Spring Cloud + Spring Cloud Alibab 微服務訓練營

作者: 黃文毅
出版社: 清華大學
出版在: 2021-07-01
ISBN-13: 9787302582236
ISBN-10: 7302582238
裝訂格式: 平裝
總頁數: 365 頁





內容描述


本書以分佈式微服務項目需求為主線,系統地介紹了Spring Boot、Spring Cloud、Spring Cloud Alibaba的生產級特性、重要組件及核心技術,包括服務治理、服務註冊與發現、負載均衡等分佈式框架所需要的各種功能。本書共分為14章。第1章主要講解Spring Boot的重要功能特性以及閱讀本書之前需要準備的環境。第2章主要介紹Spring Cloud和Spring Cloud Alibaba模塊、版本以及之間的關系。第3章主要介紹註冊中心和配置中心Nacos以及其他開源的組件。第4章主要講解微服務網關Spring Cloud Gateway和Zuul。第5、6章主要講解負載均衡組件Ribbon和微服務調用組件OpenFeign。第7章主要講解服務限流、降級、容錯以及熔斷等技術,包括Hystrix組件和Sentinel組件。第8、9章主要介紹Spring Cloud Bus消息總線、分佈式事務解決方案Seata。第10、11章主要講解鏈路追蹤組件Spring Cloud Sleuth和Zipkin,以及Spring Cloud Commons基礎包。第12章主要講解如何通過OAuth 2.0進行授權。第13章主要講解微服務和組件容器化。第14章主要介紹分佈式微服務架構的具體案例。 本書技術先進,貼近實踐,講練結合,適合具有Java基礎或1~2年開發經驗的讀者使用,也可作為網課、培訓機構和大專院校的教學用書。


目錄大綱


第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


作者介紹


黃文毅,Java架構師,從業8年,CSDN博客專家,曾先後就職於廈門星耀藍圖、上海美團、廈門美圖等科技公司,目前就職於廈門海西醫藥,主要從事後端開發工作,對分佈式技術與微服務架構,具有深刻理解與豐富的實踐經驗。
已出版《一步一步學Spring Boot微服務項目實戰》(清華大學出版社,2019年)、《微服務架構原理與實踐》(清華大學出版社,2019年)等圖書。




相關書籍

分佈式中間件技術實戰:Java版

作者 鐘林森

2021-07-01

Getting Started with Visual Studio 2019: Learning and Implementing New Features

作者 Strauss Dirk

2021-07-01

Hibernate: A Developer's Notebook

作者 James Elliott

2021-07-01