Spring Cloud Alibaba 微服務原理與實戰(zhàn)
定 價:106 元
叢書名:咕泡學院Java架構師成長叢書
- 作者:譚鋒(Mic)
- 出版時間:2020/4/1
- ISBN:9787121388248
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP312.8
- 頁碼:408
- 紙張:
- 版次:01
- 開本:16開
本書針對Spring Cloud Alibaba生態(tài)下的技術組件從應用到原理進行全面的分析,涉及的技術組件包括分布式服務治理Dubbo、服務配置和服務注冊中心Nacos、分布式限流與熔斷Sentinel、分布式消息通信RocketMQ、分布式事務Seata及微服務網(wǎng)關Spring Cloud Gateway。由于Spring Cloud中所有的技術組件都是基于Spring Boot微服務框架來集成的,所以對于Spring Boot的核心原理也做了比較詳細的分析。本書中涉及的所有技術組件,筆者都采用“場景→需求→解決方案→應用→原理”高效技術學習模型進行設計,以便讓讀者知其然且知其所以然。在“原理”部分,筆者采用大量的源碼及圖形的方式來進行分析,幫助讀者達到對技術組件深度學習和理解的目標。
譚鋒(Mic)咕泡學院聯(lián)合創(chuàng)始人,12年Java開發(fā)及架構經(jīng)驗,主要關注微服務、高并發(fā)及容器化等技術領域,純粹的技術愛好者。曾就職于平安支付,在挖財擔任業(yè)務架構。2013年參與并主導Dubbo服務化落地項目。2015年負責公司內(nèi)部Spring Boot集成Dubbo實現(xiàn)微服務化落地。2017年成立咕泡學院,目前主要負責咕泡學院Java架構進階課程的研發(fā)和課程設計。
目 錄
第1章 微服務的發(fā)展史 1
1.1 從單體架構到分布式架構的演進 2
1.1.1 單體架構 2
1.1.2 集群及垂直化 3
1.1.3 SOA 4
1.1.4 微服務架構 5
1.2 微服務架構帶來的挑戰(zhàn) 7
1.2.1 微服務架構的優(yōu)點 7
1.2.2 微服務架構面臨的挑戰(zhàn) 7
1.3 如何實現(xiàn)微服務架構 8
1.3.1 微服務架構圖 8
1.3.2 微服務架構下的技術挑戰(zhàn) 9
第2章 微服務解決方案之Spring Cloud 10
2.1 什么是Spring Cloud 11
2.2 Spring Cloud版本簡介 12
2.3 Spring Cloud規(guī)范下的實現(xiàn) 13
2.4 Spring Cloud Netflix 14
2.5 Spring Cloud Alibaba 15
2.5.1 Spring Cloud Alibaba的優(yōu)勢 15
2.5.2 Spring Cloud Alibaba的版本 16
第3章 Spring Cloud的核心之Spring Boot 18
3.1 重新認識Spring Boot 18
3.1.1 Spring IoC/DI 19
3.1.2 Bean裝配方式的升級 21
3.1.3 Spring Boot的價值 23
3.2 快速構建Spring Boot應用 25
3.3 Spring Boot自動裝配的原理 26
3.3.1 自動裝配的實現(xiàn) 27
3.3.2 EnableAutoConfiguration 28
3.3.3 AutoConfigurationImportSelector 29
3.3.4 自動裝配原理分析 31
3.3.5 @Conditional條件裝配 34
3.3.6 spring-autoconfigure-metadata 37
3.4 手寫實現(xiàn)一個Starter 38
3.4.1 Starter的命名規(guī)范 38
3.4.2 實現(xiàn)基于Redis的Starter 38
3.5 本章小結(jié) 41
第4章 微服務架構下的服務治理 42
4.1 如何理解Apache Dubbo 43
4.2 Apache Dubbo實現(xiàn)遠程通信 44
4.3 Spring Boot集成Apache Dubbo 48
4.4 快速上手ZooKeeper 52
4.4.1 ZooKeeper的安裝 52
4.4.2 ZooKeeper的數(shù)據(jù)結(jié)構 52
4.4.3 ZooKeeper的特性 53
4.4.4 Watcher機制 54
4.4.5 常見應用場景分析 54
4.5 Apache Dubbo集成ZooKeeper實現(xiàn)服務注冊 56
4.5.1 Apache Dubbo集成ZooKeeper實現(xiàn)服務注冊的步驟 57
4.5.2 ZooKeeper注冊中心的實現(xiàn)原理 59
4.6 實戰(zhàn)Dubbo Spring Cloud 60
4.6.1 實現(xiàn)Dubbo服務提供方 60
4.6.2 實現(xiàn)Dubbo服務調(diào)用方 63
4.7 Apache Dubbo的高級應用 65
4.7.1 集群容錯 66
4.7.2 負載均衡 67
4.7.3 服務降級 68
4.7.4 主機綁定規(guī)則 69
4.8 Apache Dubbo核心源碼分析 70
4.8.1 源碼構建 71
4.8.2 Dubbo的核心之SPI 71
4.8.3 無處不在的自適應擴展點 81
4.8.4 Dubbo中的IoC和AOP 85
4.8.5 Dubbo和Spring完美集成的原理 89
4.9 本章小結(jié) 95
第5章 服務注冊與發(fā)現(xiàn) 97
5.1 什么是Alibaba Nacos 98
5.2 Nacos的基本使用 99
5.2.1 Nacos的安裝 99
5.2.2 Nacos服務注冊發(fā)現(xiàn)相關API說明 100
5.2.3 Nacos集成Spring Boot實現(xiàn)服務注冊與發(fā)現(xiàn) 101
5.3 Nacos的高可用部署 103
5.3.1 安裝環(huán)境要求 104
5.3.2 安裝包及環(huán)境準備 104
5.3.3 集群配置 104
5.3.4 配置MySQL數(shù)據(jù)庫 105
5.3.5 啟動Nacos服務 105
5.4 Dubbo使用Nacos實現(xiàn)注冊中心 106
5.5 Spring Cloud Alibaba Nacos Discovery 109
5.5.1 服務端開發(fā) 109
5.5.2 消費端開發(fā) 113
5.6 Nacos實現(xiàn)原理分析 115
5.6.1 Nacos架構圖 116
5.6.2 注冊中心的原理 116
5.7 深入解讀Nacos源碼 117
5.7.1 Spring Cloud什么時候完成服務注冊 117
5.7.2 NacosServiceRegistry的實現(xiàn) 122
5.7.3 從源碼層面分析Nacos服務注冊的原理 123
5.7.4 揭秘服務提供者地址查詢 127
5.7.5 分析Nacos服務地址動態(tài)感知原理 130
5.8 本章小結(jié) 132
第6章 Nacos實現(xiàn)統(tǒng)一配置管理 133
6.1 Nacos配置中心簡介 134
6.2 Nacos集成Spring Boot實現(xiàn)統(tǒng)一配置管理 134
6.2.1 項目準備 134
6.2.2 啟動Nacos Server 135
6.2.3 創(chuàng)建配置 135
6.2.4 啟動服務并測試 137
6.3 Spring Cloud Alibaba Nacos Config 137
6.3.1 Nacos Config的基本應用 137
6.3.2 動態(tài)更新配置 139
6.3.3 基于Data ID配置YAML的文件擴展名 140
6.3.4 不同環(huán)境的配置切換 141
6.3.5 Nacos Config自定義Namespace和Group 142
6.4 Nacos Config 實現(xiàn)原理解析 145
6.4.1 配置的CRUD 145
6.4.2 動態(tài)監(jiān)聽之Pull Or Push 146
6.5 Spring Cloud如何實現(xiàn)配置的加載 148
6.5.1 PropertySourceBootstrapConfiguration 148
6.5.2 PropertySourceLocator 150
6.6 Nacos Config核心源碼解析 152
6.6.1 NacosFactory.createConfigService 154
6.6.2 NacosConfigService構造 155
6.6.3 ClientWorker 155
6.6.4 ClientWorker.checkConfigInfo 157
6.6.5 LongPollingRunnable.run 157
6.6.6 服務端長輪詢處理機制 161
6.6.7 ClientLongPolling 164
6.7 本章小結(jié) 167
第7章 基于Sentinel的微服務限流及熔斷 168
7.1 服務限流的作用及實現(xiàn) 168
7.1.1 計數(shù)器算法 169
7.1.2 滑動窗口算法 170
7.1.3 令牌桶限流算法 171
7.1.4 漏桶限流算法 172
7.2 服務熔斷與降級 172
7.3 分布式限流框架Sentinel 174
7.3.1 Sentinel的特性 174
7.3.2 Sentinel的組成 175
7.3.3 Sentinel Dashboard的部署 175
7.4 Sentinel的基本應用 176
7.4.1 Sentinel實現(xiàn)限流 176
7.4.2 資源的定義方式 178
7.4.3 Sentinel資源保護規(guī)則 179
7.4.4 Sentinel實現(xiàn)服務熔斷 183
7.5 Spring Cloud集成Sentinel實踐 185
7.5.1 Sentinel接入Spring Cloud 185
7.5.2 基于Sentinel Dashboard來實現(xiàn)流控配置 187
7.5.3 自定義URL限流異常 189
7.5.4 URL資源清洗 189
7.6 Sentinel集成Nacos實現(xiàn)動態(tài)流控規(guī)則 190
7.7 Sentinel Dashboard集成Nacos實現(xiàn)規(guī)則同步 194
7.7.1 Sentinel Dashboard源碼修改 194
7.7.2 Sentinel Dashboard規(guī)則數(shù)據(jù)同步 199
7.8 Dubbo集成Sentinel實現(xiàn)限流 200
7.8.1 Dubbo服務接入Sentinel Dashboard 200
7.8.2 Dubbo服務限流規(guī)則配置 201
7.9 Sentinel熱點限流 203
7.9.1 熱點參數(shù)限流的使用 204
7.9.2 @SentinelResource熱點參數(shù)限流 205
7.9.3 熱點參數(shù)規(guī)則說明 206
7.10 Sentinel的工作原理 206
7.11 Spring Cloud Sentinel工作原理分析 207
7.12 Sentinel核心源碼分析 210
7.12.1 限流的源碼實現(xiàn) 210
7.12.2 實時指標數(shù)據(jù)統(tǒng)計 216
7.12.3 服務降級的實現(xiàn)原理 225
7.13 本章小結(jié) 229
第8章 分布式事務 230
8.1 分布式事務問題的理論模型 231
8.1.1 X/Open分布式事務模型 231
8.1.2 兩階段提交協(xié)議 233
8.1.3 三階段提交協(xié)議 234
8.1.4 CAP定理和BASE理論 236
8.2 分布式事務問題的常見解決方案 238
8.2.1 TCC補償型方案 238
8.2.2 基于可靠性消息的最終一致性方案 239
8.2.3 最大努力通知型 242
8.3 分布式事務框架Seata 243
8.3.1 AT模式 243
8.3.2 Saga模式 244
8.4 Seata的安裝 248
8.4.1 file存儲模式 248
8.4.2 db存儲模式 249
8.4.3 Seata服務端配置中心說明 251
8.5 AT模式Dubbo集成Seata 258
8.5.1 項目準備 259
8.5.2 數(shù)據(jù)庫準備 259
8.5.3 核心方法說明 260
8.5.4 項目啟動順序及訪問 264
8.5.5 整合Seata實現(xiàn)分布式事務 265
8.6 Spring Cloud Alibaba Seata 269
8.6.1 Spring Cloud項目準備 270
8.6.2 集成Spring Cloud Alibaba Seata 270
8.6.3 關于事務分組的說明 275
8.7 Seata AT模式的實現(xiàn)原理 276
8.7.1 AT模式第一階段的實現(xiàn)原理 277
8.7.2 AT模式第二階段的原理分析 279
8.7.3 關于事務的隔離性保證 280
8.8 本章小結(jié) 283
第9章 RocketMQ分布式消息通信 285
9.1 什么是RocketMQ 285
9.1.1 RocketMQ的應用場景 286
9.1.2 RocketMQ的安裝 286
9.1.3 RocketMQ如何發(fā)送消息 287
9.1.4 RocketMQ如何消費消息 289
9.2 Spring Cloud Alibaba RocketMQ 291
9.2.1 Spring Cloud Alibaba RocketMQ架構圖 293
9.2.2 Spring Cloud Stream消息發(fā)送流程 294
9.2.3 RocketMQ Binder集成消息發(fā)送 299
9.2.4 RocketMQ Binder集成消息訂閱 303
9.2.5 Spring Cloud Stream消息訂閱流程 308
9.3 RocketMQ集群管理 314
9.3.1 整體架構設計 314
9.3.2 基本概念 315
9.3.3 為什么放棄ZooKeeper而選擇NameServer 316
9.4 如何實現(xiàn)順序消息 318
9.4.1 順序消息的使用場景 318
9.4.2 如何發(fā)送和消費順序消息 319
9.4.3 順序發(fā)送的技術原理 321
9.4.4 普通發(fā)送的技術原理 322
9.4.5 順序消費的技術原理 324
9.4.6 并發(fā)消費的技術原理 325
9.4.7 消息的冪等性 325
9.5 如何實現(xiàn)事務消息 326
9.5.1 事務消息的使用場景 326
9.5.2 如何發(fā)送事務消息 327
9.5.3 事務消息的技術原理 330
9.6 高性能設計 331
9.6.1 順序?qū)懕P 333
9.6.2 消費隊列設計 334
9.6.3 消息跳躍讀取 336
9.6.4 數(shù)據(jù)零拷貝 336
9.6.5 動態(tài)伸縮能力 336
9.6.6 消息實時投遞 337
9.7 高可用設計 338
9.7.1 消息發(fā)送重試機制 339
9.7.2 故障規(guī)避機制 340
9.7.3 同步刷盤與異步刷盤 343
9.7.4 主從復制 350
9.7.5 讀寫分離 351
9.7.6 消費重試機制 351
9.7.7 ACK機制 352
9.7.8 Broker集群部署 352
9.8 本章小結(jié) 353
第10章 微服務網(wǎng)關之Spring Cloud Gateway 354
10.1 API網(wǎng)關的作用 355
10.1.1 統(tǒng)一認證鑒權 356
10.1.2 灰度發(fā)布 357
10.2 網(wǎng)關的本質(zhì)及技術選型 358
10.2.1 OpenResty 358
10.2.2 Spring Cloud Zuul 360
10.2.3 Spring Cloud Gateway 361
10.3 Spring Cloud Gateway網(wǎng)關實戰(zhàn) 361
10.3.1 spring-cloud-gateway-service 361
10.3.2 spring-cloud-gateway-sample 362
10.4 Spring Cloud Gateway原理分析 363
10.5 Route Predicate Factories 364
10.5.1 指定時間規(guī)則匹配路由 365
10.5.2 Cookie匹配路由 365
10.5.3 Header匹配路由 366
10.5.4 Host匹配路由 366
10.5.5 請求方法匹配路由 367
10.5.6 請求路徑匹配路由 367
10.6 Gateway Filter Factories 367
10.6.1 GatewayFilter 368
10.6.2 GlobalFilter 372
10.7 自定義過濾器 375
10.7.1 自定義GatewayFilter 375
10.7.2 自定義GlobalFilter 377
10.8 Spring Cloud Gateway集成Nacos實現(xiàn)請求負載 378
10.9 Spring Cloud Gateway集成Sentinel網(wǎng)關限流 381
10.9.1 Route維度限流 382
10.9.2 自定義API分組限流 384
10.9.3 自定義異常 386
10.9.4 網(wǎng)關流控控制臺 387
10.9.5 網(wǎng)關限流原理 388
10.10 本章小結(jié) 389