Spring Cloud Alibaba大型微服務架構項目實戰(上冊)

十三

商品描述

本書由基礎知識講起,包括微服務架構介紹、技術選型介紹、基礎環境搭建。目的是幫助讀者熟悉微服務架構和 Spring Cloud 技術棧的前置知識,可以順利的過渡到項目實戰階段。之後,會講解微服務架構中的各種組件的整合與使用。這部分內容主要包括微服務架構中各組件的介紹與應用實操。內容涵蓋服務註冊與發現、服務管理、服務通信、負載均衡器、網關、服務容錯、鏈路追蹤、分佈式事務等知識點,包括相關組件的搭建和整合,有搭建過程講解,也有整合到代碼中的編碼實踐。當然,筆者不會僅僅只介紹這些組件的搭建,包括這些組件的高可用保障、集群搭建和部署架構也都會單獨講解。最後,本書的後半部分將會結合實戰項目,對一個大型的商城項目進行拆解和微服務化,並從零到一落地一個功能完整、流程完善的微服務項目。由淺入深,逐一擊破微服務架構項目中的難點,讓各位讀者能夠實際地體驗到微服務架構項目的搭建和開發。在實戰中,讓各位讀者深入理解微服務技術,掌握微服務項目開發的核心知識點。通過本書的講解和提供的完整代碼,讓讀者掌握Spring Cloud Alibaba技術棧中的組件、知識點,並且能夠應用到自己所開發的項目中。

目錄大綱

第1章 千里之行:微服務架構學習路徑與建議 1
1.1 微服務架構的學習路徑 1
1.1.1 上手微服務架構項目會遇到哪些問題 2
1.1.2 梳理微服務架構 3
1.1.3 拆解微服務架構搭建的步驟 4
1.1.4 搭建並整合各個微服務組件 6
1.1.5 從零到一開發大型的微服務架構項目 6
1.2 章節規劃 8
1.2.1 微服務架構的基礎知識 8
1.2.2 微服務架構各組件的搭建與整合 8
1.2.3 微服務架構項目實戰 9
1.3 學前必備 10
1.4 學習建議 10
第2章 知己知彼:詳解微服務架構的前世今生 12
2.1 什麽是微服務架構 13
2.2 為什麽要使用微服務架構 15
2.2.1 架構的演進 15
2.2.2 微服務架構並不是石頭縫里蹦出的孫悟空 21
2.2.3 哪些原因導致系統架構往微服務架構的方向演進 22
2.3 微服務架構的優缺點 23
2.3.1 微服務架構的優點 24
2.3.2 微服務架構的缺點 26
2.4 架構的盡頭是微服務嗎 27
2.5 系統架構升級改造時一定會用到微服務嗎 27
2.6 學習微服務架構有什麽好處 29
2.7 微服務架構中的常用技術 29
第3章 八面玲瓏:一站式解決方案——Spring Cloud技術棧 33
3.1 微服務架構中常用的技術及落地方案 33
3.2 Spring Cloud技術棧 35
3.3 Spring Cloud Netflix套件簡介 37
3.4 Spring Cloud Alibaba套件簡介 38
3.5 選擇Spring Cloud Alibaba的原因 40
第4章 有備無患:項目運行所需的開發環境和基礎模板代碼 42
4.1 JDK的安裝和配置 42
4.1.1 下載安裝包 42
4.1.2 安裝JDK 44
4.1.3 配置環境變量 45
4.1.4 JDK環境變量驗證 46
4.2 Maven的安裝和配置 47
4.2.1 下載安裝包 47
4.2.2 安裝並配置Maven 48
4.2.3 Maven環境變量驗證 49
4.2.4 配置國內Maven鏡像 49
4.3 開發工具IDEA的安裝與配置 51
4.3.1 安裝IDEA及其功能簡介 52
4.3.2 配置IDEA的Maven環境 54
4.3.3 Lombok插件 55
4.4 Spring Boot簡介 56
4.5 Spring Boot項目創建 57
4.5.1 認識Spring Initializr 57
4.5.2 使用Spring Initializr初始化一個Spring Boot項目 58
4.5.3 使用IDEA編輯器初始化Spring Boot項目 59
4.6 Spring Boot項目目錄結構簡介 60
4.7 啟動Spring Boot項目 61
4.7.1 在IDEA編輯器中啟動Spring Boot項目 61
4.7.2 Maven插件啟動 63
4.7.3 java -jar命令啟動 64
4.7.4 Spring Boot項目啟動日誌 65
4.8 開發第一個Spring Boot項目 66
4.9 構建Spring Cloud Alibaba模板項目 68
第5章 拉開帷幕:詳解服務通信與服務治理 74
5.1 認識服務通信 74
5.1.1 為什麽需要服務通信 74
5.1.2 服務通信簡介 76
5.2 HTTP調用之編碼實踐 77
5.2.1 被調用端編碼實現 79
5.2.2 使用HttpClient處理請求 81
5.2.3 使用RestTemplate處理請求 83
5.2.4 使用WebClient處理請求 85
5.3 為什麽需要服務治理 87
5.4 服務註冊和服務發現 90
5.4.1 服務註冊簡介 90
5.4.2 服務發現簡介 91
5.5 健康檢查機制 92

第6章 好戲開場:服務管理、註冊中心、配置中心——Nacos 94
6.1 Nacos簡介 94
6.2 Nacos下載與啟動 96
6.2.1 下載Nacos 96
6.2.2 啟動Nacos 97
6.3 修改Nacos持久化配置 100
6.4 Nacos整合之服務註冊編碼實踐 104
6.4.1 編寫服務代碼 104
6.4.2 在配置文件中添加Nacos配置參數 107
6.4.3 服務註冊功能驗證 109
6.4.4 Nacos服務註冊源碼解析 112
6.5 Nacos整合之服務發現編碼實踐 119
6.5.1 編寫服務消費端的代碼 119
6.5.2 將服務註冊至Nacos 121
6.5.3 編寫服務通信代碼 122
6.5.4 服務發現的源碼分析 125
6.6 配置中心介紹 140
6.6.1 編碼中常用的配置方式分析 140
6.6.2 為什麽需要配置中心 142
6.6.3 什麽是配置中心 143
6.6.4 配置中心具備哪些功能 144
6.6.5 配置中心的優點 145
6.6.6 配置中心在微服務架構中的作用 146
6.7 整合Nacos配置中心編碼實踐 147
6.7.1 創建基礎工程 147
6.7.2 集成Nacos配置中心 151
6.7.3 Data ID詳解 155
6.7.4 整合Nacos配置中心功能驗證 156

6.8 集成Nacos實現配置動態刷新 158
6.8.1 實現業務開關 159
6.8.2 配置動態刷新功能的好處及應用場景 162
6.9 多配置文件讀取 163
6.9.1 extension-configs配置項簡介 163
6.9.2 在配置中心創建多個配置文件 164
6.9.3 在代碼中增加多配置讀取的配置及功能驗證 165
第7章 百裡挑一:Spring Cloud LoadBalancer負載均衡器 167
7.1 認識負載均衡 167
7.2 Spring Cloud LoadBalancer簡介 168
7.3 負載均衡器的功能演示 169
7.4 Spring Cloud LoadBalancer自動配置源碼分析 172
7.5 引入負載均衡器後發起請求的源碼分析 177
7.5.1 RestTemplate中沒有攔截器時是怎樣工作的 177
7.5.2 被定製化後的RestTemplate對象是怎樣進入攔截器邏輯的 179
7.5.3 攔截器中處理請求的流程 180
7.6 內置負載均衡器的源碼分析 182
7.7 自定義負載均衡算法 184
7.8 服務通信和服務治理知識總結 187
7.9 multi-service-demo模板項目創建 189
第8章 雲中錦書:OpenFeign遠程調用實踐 195
8.1 OpenFeign簡介 195
8.2 編碼集成OpenFeign 196
8.3 OpenFeign參數傳遞編碼實踐 201
8.3.1 簡單類型處理 202
8.3.2 簡單對象類型處理 206
8.3.3 復雜對象類型處理 209
8.3.4 通用結果類Result 214

第9章 一夫當關:微服務網關——Spring Cloud Gateway 217
9.1 微服務網關介紹 217
9.1.1 認識微服務網關 217
9.1.2 網關層的主流技術選型 219
9.1.3 選擇Spring Cloud Gateway的原因 222
9.2 整合Spring Cloud Gateway編碼實踐 224
9.2.1 編碼整合Spring Cloud Gateway 224
9.2.2 將網關服務整合到服務中心 227
9.2.3 整合Spring Cloud Gateway報錯503的問題解決方法 230
9.3 微服務網關Spring Cloud Gateway之Predicate 231
9.3.1 Spring Cloud Gateway內置斷言工廠 231
9.3.2 自定義斷言編碼實踐 235
9.4 微服務網關Spring Cloud Gateway之Filter 239
9.4.1 Spring Cloud Gateway的內置過濾器 240
9.4.2 自定義網關過濾器 244
第10章 登高望遠:分佈式事務解決方案——Seata 251
10.1 分佈式事務詳解 251
10.1.1 數據庫事務簡介 251
10.1.2 分佈式事務的問題演示編碼 257
10.1.3 分佈式事務問題演示 271
10.2 分佈式事務解決方案概覽 273
10.2.1 分佈式事務產生的原因 273
10.2.2 分佈式事務的解決方案 275
10.2.3 Alibaba Seata簡介 277
10.3 安裝Seata 278
10.3.1 下載Seata Server安裝包 278
10.3.2 Seata Server的持久化配置 278

10.4 Seata Server整合Nacos服務中心 282
10.4.1 配置Nacos的連接信息 283
10.4.2 啟動Seata Server 283
10.5 整合Seata解決分佈式事務編碼實踐 285
10.5.1 創建undo_log表 285
10.5.2 整合Seata解決分佈式事務 287
10.6 Seata整合後的基礎檢驗 290
10.6.1 服務註冊驗證 290
10.6.2 數據源代理驗證 291
10.6.3 服務實例與Seata Server的通信驗證 292
10.7 Seata中間件的重要概念 293
10.8 驗證分佈式事務問題及日誌分析 295
10.9 Seata(AT模式)分佈式事務的處理流程 302
第11章 防患未然:服務容錯解決方案——Sentinel 305
11.1 服務容錯詳解 305
11.1.1 為什麽要引入服務容錯組件 305
11.1.2 服務容錯落地方案:流量控制與降級熔斷 307
11.2 Sentinel簡介及控制台安裝 310
11.2.1 阿裡的流量防衛兵——Sentinel 310
11.2.2 下載與啟動Sentinel控制台 312
11.3 整合Sentinel客戶端編碼實踐 314
11.4 Sentinel中的基本概念 317
11.4.1 資源 317
11.4.2 規則 318
11.5 限流策略和流控效果 319
11.5.1 限流策略之直接流控 319
11.5.2 限流策略之關聯流控 321
11.5.3 限流策略之鏈路流控 322
11.5.4 流控效果之快速失敗 323
11.5.5 流控效果之Warm Up 323
11.5.6 流控效果之排隊等待 325
11.5.7 規則配置及限流效果展示 326
11.6 熔斷策略配置實踐 329
11.6.1 熔斷策略簡介 330
11.6.2 異常熔斷的基礎編碼 331
11.6.3 熔斷策略配置及效果演示 333
11.7 內外結合:降級熔斷+流量控制 337
第12章 順藤摸瓜:鏈路追蹤解決方案——Spring Cloud Sleuth+Zipkin 339
12.1 服務鏈路追蹤及技術選型 339
12.1.1 什麽是鏈路追蹤 339
12.1.2 Spring Cloud Sleuth簡介 340
12.2 整合Spring Cloud Sleuth編碼實踐 342
12.2.1 基於Spring Cloud Sleuth的鏈路追蹤實現思路 342
12.2.2 代碼基礎改造 343
12.2.3 整合Spring Cloud Sleuth編碼 346
12.3 搭建Zipkin Server實現鏈路追蹤的可視化管理 350
12.3.1 搭建Zipkin Server的詳細過程 350
12.3.2 整合Zipkin Client編碼實踐 352
12.3.3 鏈路追蹤效果演示 353
第13章 運籌帷幄:Elastic Search + Logstash + Kibana日誌中心搭建 357
13.1 ELK——日誌收集、分析和展示的解決方案 357
13.1.1 認識ELK 357
13.1.2 ELK的工作流程 358
13.1.3 ELK的優勢 359
13.1.4 ELK增強版 359
13.2 搭建ELK日誌中心詳細過程 361
13.2.1 日誌環境搭建準備 361
13.2.2 搭建ELK日誌中心 364
13.3 Spring Boot項目將日誌輸出至ELK編碼實踐 370
13.4 Kibana配置索引模板和索引模式 373
13.4.1 配置索引模板 374
13.4.2 配置索引模式 375
13.4.3 通過Kibana查詢日誌 377
13.5 微服務架構項目實戰將日誌輸出至ELK編碼實踐 379
13.5.1 微服務架構項目中的日誌輸出配置 379
13.5.2 通過Kibana查詢日誌 382
第14章 一戰定乾坤:大型微服務架構項目設計與實戰 387
14.1 微服務實戰項目詳解 387
14.1.1 實戰項目簡介 387
14.1.2 新蜂商城項目的開源歷程 388
14.1.3 新蜂商城項目的功能及數據庫設計 390
14.2 由單體版到微服務架構版的拆分思路 392
14.3 微服務架構實戰項目源碼獲取和項目啟動 393
14.3.1 基礎環境準備及微服務組件安裝和配置 394
14.3.2 下載微服務架構實戰項目的項目源碼 394
14.3.3 微服務架構實戰項目的目錄結構 395
14.3.4 啟動並驗證微服務實例 399
14.4 微服務架構實戰項目的功能演示 408
14.4.1 商城用戶的註冊與登錄功能演示 408
14.4.2 把商品添加至購物車的功能演示 411
14.4.3 下單流程演示 415
14.4.4 後台管理系統的部分功能演示 419
14.5 微服務架構實戰項目開發過程 424
14.6 微服務架構實戰項目中接口的參數處理及統一結果響應 425
14.7 微服務架構實戰項目打包和部署的註意事項 427