深入理解Spring Cloud與實戰(zhàn)
定 價:106 元
- 作者:方劍
- 出版時間:2020/12/1
- ISBN:9787121399732
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP368.5
- 頁碼:452
- 紙張:
- 版次:01
- 開本:16開
本書共分10章,主要介紹Spring Cloud各個核心組件的設(shè)計原理,以及目前流行的Spring Cloud Alibaba和 Netflix組件,并且剖析Spring Cloud對流處理、批處理,以及目前業(yè)界流行的Serverless的支持。在介紹各部分內(nèi)容時,本書將理論與實踐相結(jié)合,對每個核心知識點給出了具體的案例應(yīng)用,以幫助讀者掌握核心組件的設(shè)計理念。
方劍,花名洛夜,Spring Cloud Alibaba 開源項目負(fù)責(zé)人/創(chuàng)始人之一。Apache RocketMQ Committer,Alibaba Nacos Committer。目前就職于阿里巴巴集團。曾在個人博客上編寫過《Spring MVC源碼分析系列》、《Spring Boot源碼分析系列》文章。目前,關(guān)注微服務(wù)、云原生、Kubernetes。
第1章 Spring Cloud生態(tài) 1
1.1 Spring Cloud 基礎(chǔ):Spring Boot概述 1
1.2 Spring Boot核心特性 3
1.2.1 Web服務(wù)器:WebServer 3
1.2.2 條件注解:@ConditionalOnXX 7
1.2.3 工廠加載機制 10
1.2.4 配置加載機制 12
1.2.5 Spring Boot Actuator 15
1.3 Spring Cloud 概述 17
1.3.1 Spring Cloud誕生背景 17
1.3.2 Netflix OSS 19
1.3.3 Spring Cloud項目 20
1.3.4 Spring Cloud 版本 21
1.3.5 Spring Cloud 最新動態(tài) 23
第2章 服務(wù)注冊與服務(wù)發(fā)現(xiàn) 26
2.1 微服務(wù)架構(gòu)演進 26
2.2 使用Alibaba Nacos體驗第一個Spring Cloud微服務(wù)應(yīng)用 29
2.2.1 下載并啟動Nacos Server 30
2.2.2 啟動 Nacos Discovery Provider 進行服務(wù)注冊 32
2.2.3 啟動 Nacos Discovery Consumer 進行服務(wù)發(fā)現(xiàn) 33
2.3 使用Netflix Eureka替換Alibaba Nacos注冊中心 36
2.3.1 啟動Eureka Server 37
2.3.2 啟動 Eureka Discovery Provider 進行服務(wù)注冊 38
2.3.3 啟動 Nacos Discovery Consumer 進行服務(wù)發(fā)現(xiàn) 39
2.4 Spring Cloud 統(tǒng)一服務(wù)注冊/發(fā)現(xiàn)編程模型 40
2.4.1 DiscoveryClient和ReactiveDiscoveryClient 40
2.4.2 ServiceInstance和Registration 44
2.4.3 ServiceRegistry 48
2.4.4 ServiceRegistryEndpoint 50
2.5 雙注冊雙訂閱模式 51
2.5.1 雙注冊雙訂閱模式分析 51
2.5.2 案例:使用雙注冊雙訂閱模式遷移Eureka注冊中心到Nacos注冊中心 54
第3章 負(fù)載均衡與服務(wù)調(diào)用 57
3.1 負(fù)載均衡原理 57
3.2 Spring Cloud LoadBalancer負(fù)載均衡組件 59
3.3 Netflix Ribbon負(fù)載均衡 74
3.3.1 RibbonLoadBalancerClient 74
3.3.2 RibbonServer和Server 79
3.3.3 ServerIntrospector 82
3.3.4 ILoadBalancer 84
3.3.5 ServerList 87
3.3.6 ServerListUpdater 90
3.3.7 ServerStats 92
3.3.8 Netflix Ribbon配置項總結(jié) 94
3.3.9 Ribbon緩存時間 97
3.4 Dubbo LoadBalance 負(fù)載均衡 98
3.5 OpenFeign:聲明式Rest客戶端 100
3.5.1 OpenFeign概述 100
3.5.2 OpenFeign 對 JAX-RS 的支持 102
3.5.3 OpenFeign 底層執(zhí)行原理 103
3.6 Dubbo Spring Cloud :服務(wù)調(diào)用的新選擇 105
3.7 再談路由和負(fù)載均衡 111
3.8 案例:應(yīng)用流量控制 112
3.8.1 流量控制可以解決的業(yè)務(wù)場景 113
3.8.2 使用 Netflix Ribbon 完成應(yīng)用灰度發(fā)布 115
第4章 配置管理 119
4.1 配置中心背景概述 119
4.2 Spring/Spring Boot 與配置 120
4.3 Spring Cloud與配置 122
4.3.1 使用Alibaba Nacos體驗配置的獲取以及動態(tài)刷新 123
4.3.2 從Spring Cloud 配置中心獲取配置原理 125
4.3.3 Spring Cloud配置動態(tài)刷新 135
4.4 Spring Cloud Config Server/Client 151
4.4.1 Spring Cloud Config Server 151
4.4.2 Spring Cloud Config Client 165
4.4.3 Spring Cloud Config Client 與 Service Discovery 整合 171
4.4.4 Spring Cloud Config 配置動態(tài)更新 174
4.5 再談配置動態(tài)刷新 175
4.6 案例:Spring Cloud應(yīng)用流量控制策略動態(tài)生效 179
第5章 熔斷器 184
5.1 熔斷器模式概述 184
5.2 手動實現(xiàn)一個斷路器 186
5.2.1 定義 State 枚舉和 Counter 計數(shù)器類 186
5.2.2 定義 CircuitBreaker 類 188
5.2.3 使用 CircuitBreaker 進行場景測試 191
5.3 Spring Cloud Circuit Breaker 技術(shù)演進 193
5.4 Alibaba Sentinel 199
5.4.1 Sentinel的核心概述 199
5.4.2 Spring Cloud Alibaba Sentinel 204
5.4.3 Sentinel 與 OpenFeign和RestTemplate 207
5.4.4 Sentinel限流與Dashboard 211
5.4.5 Sentinel 高級特性 215
5.5 Netflix Hystrix 219
5.5.1 Hystrix核心概述 219
5.5.2 Spring Cloud Netflix Hystrix 225
5.5.3 Hystrix限流與Dashboard 227
5.5.4 Hystrix 高級特性 231
5.6 Resilience4j 235
5.6.1 Resilience4j 體驗 236
5.6.2 Spring Cloud Resilience4j 241
5.6.3 Resilience4j 高級特性 244
5.7 案例:使用 Sentinel 保護應(yīng)用,防止服務(wù)雪崩 248
第6章 Spring生態(tài)消息驅(qū)動 253
6.1 消息中間件概述 254
6.2 Spring與消息 257
6.2.1 消息編程模型的統(tǒng)一 257
6.2.2 消息發(fā)送和訂閱 258
6.2.3 WebSocket 265
6.2.4 案例:使用spring-messaging處理WebSocket 268
6.3 Spring Integration 271
6.3.1 Spring Integration 核心組件概述 272
6.3.2 Spring Integration核心組件使用 275
6.4 Spring Cloud Stream 277
6.4.1 使用Spring Cloud Stream發(fā)送和接收消息 277
6.4.2 理解 Binder 和 Binding 280
6.4.3 深入理解Spring Cloud Stream 282
6.4.4 高級特性 284
第7章 消息總線 295
7.1 消息總線概述 295
7.2 深入理解Spring Cloud Bus 296
7.2.1 Spring Cloud Bus的使用 297
7.2.2 Spring Cloud Bus的原理 300
7.2.3 Spring Cloud Bus 事件 302
7.2.4 Spring Cloud Bus 源碼分析 305
7.3 案例:使用Spring Cloud Bus完成多節(jié)點配置動態(tài)刷新 309
第8章 Spring Cloud Data Flow 311
8.1 批處理/流處理概述 312
8.2 流處理案例:信用卡反欺詐系統(tǒng) 315
8.3 批處理案例:統(tǒng)計GitHub倉庫的各項指標(biāo)數(shù)據(jù) 323
8.4 Spring Cloud Data Flow批處理任務(wù)組合 331
8.5 Spring Cloud Data Flow Shell 335
8.6 Spring Cloud Skipper 337
8.7 Spring Cloud Deployer 341
8.7.1 TaskLauncher 接口 342
8.7.2 AppDeployer 接口 344
8.7.3 LocalAppDeployer 348
8.8 Spring Cloud Task 349
8.8.1 體驗Spring Cloud Task 349
8.8.2 深入理解Spring Cloud Task 351
8.8.3 Spring Cloud Task Batch 354
8.9 Spring Batch 358
8.9.1 Spring Batch 核心組件 358
8.9.2 案例:使用 Spring Batch 完成便利店每日賬單統(tǒng)計 361
第9章 網(wǎng)關(guān) 366
9.1 API網(wǎng)關(guān)概述 366
9.2 Netflix Zuul 368
9.3 非阻塞式的Spring Cloud Gateway 371
9.4 Route路由信息 376
9.5 Predicate機制 377
9.5.1 PredicateDefinition和AsyncPredicate 377
9.5.2 RoutePredicateFactory 378
9.5.3 內(nèi)置RoutePredicateFactory 381
9.6 Filter機制 382
9.6.1 FilterDefinition和GatewayFilter 382
9.6.2 GlobalFilter 386
9.6.3 內(nèi)置 GatewayFilterFactory 387
9.6.4 網(wǎng)關(guān)內(nèi)置的GlobalFilter 390
9.7 整合注冊中心和配置中心 391
9.8 GatewayControllerEndpoint 397
9.9 案例:使用Spring Cloud Gateway進行路由轉(zhuǎn)發(fā) 398
第10章 Spring Cloud與Serverless 401
10.1 Serverless 401
10.2 Java Function 403
10.3 Spring Cloud Function 405
10.4 Spring Cloud Function與Spring生態(tài)的整合 411
10.4.1 Spring Cloud Function與Spring Web/WebFlux 412
10.4.2 Spring Cloud Function 與 Spring Cloud Stream 420
10.4.3 Spring Cloud Function 與 Spring Cloud Task 427
10.5 案例:使用GCP Cloud Functions體驗Spring Cloud Function 430