Spring Cloud Alibaba 與 Kubernetes 微服務容器化實踐
曹宇、王宇翔、胡書敏
買這商品的人也買了...
-
jQuery Mobile 建置與執行 (jQuery Mobile: Up and Running)$520$411 -
CI (Continuous integration) 關鍵技術—使用 Jenkins$420$332 -
王者歸來-PHP 完全開發範例集, 3/e$860$731 -
$352大話代碼架構 (項目實戰版) -
為你自己學 Git$500$390 -
$474SQL 優化核心思想 -
無瑕的程式碼-整潔的軟體設計與架構篇 (Clean Architecture: A Craftsman's Guide to Software Structure and Design)$580$452 -
$301Spring Data JPA 從入門到精通 -
30歲警官靠美股提早退休$350$298 -
$454Spring 微服務架構設計, 2/e -
Hands-On Microservices with C# 8 and .NET Core 3, 3/e (Paperback)$1,530$1,454 -
$564精通Spring Cloud微服務架構 -
$403Vue.js 入門與商城開發實戰 -
CQRS 命令查詢職責分離模式 (Command Query Responsibility Segregation)$500$390 -
領域驅動設計與 .NET Core:應用 DDD 原則,探索軟體核心複雜度 (Hands-On Domain-Driven Design with .NET Core)$780$608 -
30天與 Docker 做好朋友:跟鯨魚先生一同探索開發者的大平台(iT邦幫忙鐵人賽系列書)$600$468 -
$774Spring Data JPA:入門、實戰與進階 -
不當礦工當老闆:自己動手開發區塊鏈應用業務$780$616 -
電商存儲系統實戰 : 架構設計與海量數據處理$534$507 -
$403Xamarin 全棧開發技術與實踐 (微課版) -
美股獲利入門,睡覺時間賺遍全世界:精選25檔增利股,年年發股利,提前布局未來四騎士,大賺價差。$400$340 -
$458Spring Boot 企業級項目開發實戰 -
Solidity 實戰全書:完整掌握智能合約!成為獨立開發 Dapp 的區塊鏈工程師$650$507 -
ASP.NET Core 工程師不可不知的 10大安全性漏洞與防駭方法$690$538 -
高並發系統實戰派:集群、Redis 緩存、海量存儲、Elasticsearch、RocketMQ、微服務、持續集成等$654$621
中文年末書展|繁簡參展書2書75折 詳見活動內容 »
-
75折
為你寫的 Vue Components:從原子到系統,一步步用設計思維打造面面俱到的元件實戰力 (iThome 鐵人賽系列書)$780$585 -
75折
BDD in Action, 2/e (中文版)$960$720 -
75折
看不見的戰場:社群、AI 與企業資安危機$750$563 -
79折
AI 精準提問 × 高效應用:DeepSeek、ChatGPT、Claude、Gemini、Copilot 一本搞定$390$308 -
7折
超實用!Word.Excel.PowerPoint 辦公室 Office 365 省時高手必備 50招, 4/e (暢銷回饋版)$420$294 -
75折
裂縫碎光:資安數位生存戰$550$412 -
85折
日本當代最強插畫 2025 : 150位當代最強畫師豪華作品集$640$544 -
79折
Google BI 解決方案:Looker Studio × AI 數據驅動行銷實作,完美整合 Google Analytics 4、Google Ads、ChatGPT、Gemini$630$498 -
79折
超有料 Plus!職場第一實用的 AI 工作術 - 用對 AI 工具、自動化 Agent, 讓生產力全面進化!$599$473 -
75折
從零開始學 Visual C# 2022 程式設計, 4/e (暢銷回饋版)$690$518 -
75折
Windows 11 制霸攻略:圖解 AI 與 Copilot 應用,輕鬆搞懂新手必學的 Windows 技巧$640$480 -
75折
精準駕馭 Word!論文寫作絕非難事 (好評回饋版)$480$360 -
Sam Yang 的插畫藝術:用 Procreate / PS 畫出最強男友視角 x 女孩美好日常$699$629 -
79折
AI 加持!Google Sheets 超級工作流$599$473 -
78折
想要 SSR? 快使用 Nuxt 吧!:Nuxt 讓 Vue.js 更好處理 SEO 搜尋引擎最佳化(iThome鐵人賽系列書)$780$608 -
75折
超實用!業務.總管.人資的辦公室 WORD 365 省時高手必備 50招 (第二版)$500$375 -
7折
Node-RED + YOLO + ESP32-CAM:AIoT 智慧物聯網與邊緣 AI 專題實戰$680$476 -
79折
「生成式⇄AI」:52 個零程式互動體驗,打造新世代人工智慧素養$599$473 -
7折
Windows APT Warfare:惡意程式前線戰術指南, 3/e$720$504 -
75折
我輩程式人:回顧從 Ada 到 AI 這條程式路,程式人如何改變世界的歷史與未來展望 (We, Programmers: A Chronicle of Coders from Ada to AI)$850$637 -
75折
不用自己寫!用 GitHub Copilot 搞定 LLM 應用開發$600$450 -
79折
Tensorflow 接班王者:Google JAX 深度學習又快又強大 (好評回饋版)$780$616 -
79折
GPT4 會你也會 - 共融機器人的多模態互動式情感分析 (好評回饋版)$700$553 -
79折
技術士技能檢定 電腦軟體應用丙級術科解題教本|Office 2021$460$363 -
75折
Notion 與 Notion AI 全能實戰手冊:生活、學習與職場的智慧策略 (暢銷回饋版)$560$420
相關主題
商品描述
本書圍繞分佈式微服務的項目需求,全面講述了Spring Cloud Alibaba組件實現服務治理、負載均衡、安全管理、分佈式事務、消息發送和服務監控的技術要點,以及基於Docker與Kubernetes容器化項目管理的相關技術。主要內容包括:Spring Cloud Alibaba體系架構概述,用Nacos和Nacos集群搭建基於服務治理架構的實踐要點,用Ribbon實現負載均衡的做法,基於Sentinel組件實現熔斷和限流等安全需求的實踐要點,用Gateway組件搭建網關的實踐要點,用OpenFeign和Dubbo搭建遠程調用體系的實踐要點,基於Spring Cloud Stream搭建消息通信體系的實踐要點,用JPA與Redis與MyCat搭建微服務數據服務層的實踐要點,用Seata組件構建分佈式事務架構的實踐要點和用Skywaiking組件搭建微服務監控體系的實踐要點,基於Docker與Kubernetes容器組件搭建微服務體系,用Jenkins組件實踐集成化項目部署流程的相關技術等內容。 本書技術先進,註重實踐,適合有一定Java基礎的開發人員和學生閱讀,也可以供培訓機構和大專院校作為教學用書。
目錄大綱
目 錄
第1章 Spring Cloud Alibaba與微服務架構 1
1.1 微服務架構與Alibaba解決方案 1
1.1.1 單體架構與微服務架構 1
1.1.2 微服務架構的優勢與挑戰 2
1.1.3 Spring Cloud Alibaba微服務解決方案 3
1.1.4 Spring Boot和Spring Cloud Alibaba的關系 3
1.2 搭建開發環境 4
1.2.1 安裝JDK 4
1.2.2 安裝IntelliJ IDEA 4
1.2.3 安裝Docker環境 5
1.3 搭建Spring Boot單體服務 5
1.3.1 在IDEA中創建Spring Boot項目 5
1.3.2 編寫pom.xml 7
1.3.3 編寫啟動類 8
1.3.4 編寫控制器類 8
1.3.5 編寫配置文件 9
1.3.6 啟動Spring Boot,觀察運行效果 9
1.4 動手練習 9
第2章 Spring Boot整合Nacos 11
2.1 認識和安裝Nacos 11
2.1.1 Nacos與註冊中心 11
2.1.2 Nacos與配置中心 12
2.1.3 搭建Nacos環境,啟動Nacos組件 12
2.1.4 觀察可視化管理界面 12
2.2 Spring Boot整合Nacos註冊中心 13
2.2.1 引入註冊中心後的框架圖 13
2.2.2 創建服務提供者項目 13
2.2.3 創建服務消費者項目 15
2.2.4 啟動Spring Boot類,觀察註冊中心的效果 17
2.3 用Nacos配置中心管理配置參數 18
2.3.1 在配置中心設置參數 18
2.3.2 在項目中使用參數 19
2.4 搭建高可用的Nacos集群 21
2.4.1 配置Nacos的持久化效果 21
2.4.2 搭建集群 22
2.4.3 觀察集群效果 23
2.4.4 以集群的方式管理配置 24
2.4.5 以集群的方式管理服務 24
2.5 動手練習 25
第3章 負載均衡組件Ribbon 27
3.1 負載均衡與Ribbon組件 27
3.1.1 微服務架構中的負載均衡需求 27
3.1.2 Ribbon組件介紹 28
3.1.3 Ribbon和Nacos的整合方式 28
3.2 Ribbon實現負載均衡的範例 28
3.2.1 項目框架圖 29
3.2.2 編寫服務提供者項目 29
3.2.3 在服務調用者項目裏引入Ribbon 31
3.2.4 觀察負載均衡效果 33
3.3 Ribbon實戰要點分析 34
3.3.1 設置不同的負載均衡策略 34
3.3.2 配置全局性的Ribbon參數 34
3.3.3 實現Ribbon飢餓加載模式 35
3.3.4 Ribbon常用參數分析 35
3.4 Ribbon整合Nacos註冊中心集群 36
3.4.1 整合後的系統架構 36
3.4.2 Ribbon整合Nacos集群的實現步驟 36
3.5 動手練習 37
第4章 限流與防護組件Sentinel 38
4.1 微服務體系中的限流和防護需求 38
4.1.1 限流 38
4.1.2 熔斷 38
4.1.3 服務降級 39
4.2 Sentinel組件介紹 39
4.2.1 搭建Sentinel環境 39
4.2.2 啟動Sentinel控制臺 40
4.3 通過Sentinel實現限流 40
4.3.1 創建項目,引入依賴包 40
4.3.2 編寫啟動類和配置文件 41
4.3.3 編寫控制器類 42
4.3.4 在控制臺裏設置限流參數 42
4.3.5 觀察限流效果 44
4.4 實現熱點限流效果 45
4.4.1 定義熱點限流方法 45
4.4.2 設置熱點限流參數 45
4.4.3 觀察熱點限流效果 46
4.4.4 配置參數例外項 47
4.5 實現熔斷效果 48
4.5.1 定義含熔斷效果的方法 48
4.5.2 設置慢調用比例熔斷參數 48
4.5.3 觀察熔斷效果 50
4.5.4 設置異常熔斷參數 51
4.6 實現服務降級效果 52
4.6.1 實現因限流而導致的服務降級 52
4.6.2 通過fallback參數實現服務降級 53
4.6.3 服務降級的實踐做法 53
4.7 動手練習 54
第5章 網關組件Gateway 55
5.1 Gateway網關組件概述 55
5.2 在微服務體系中引入Gateway組件 56
5.2.1 編寫業務方法 56
5.2.2 創建網關項目 56
5.2.3 實現簡單轉發功能 57
5.2.4 網關的過濾器 58
5.2.5 網關的全局過濾器 59
5.2.6 網關的斷言 60
5.3 Gateway整合Nacos,實現負載均衡 61
5.3.1 Gateway整合Nacos的架構圖 61
5.3.2 基於Nacos的業務集群 62
5.3.3 以負載均衡的方式轉發請求 62
5.4 Gateway整合Sentinel和Nacos 64
5.4.1 整合後的架構圖 64
5.4.2 搭建網關層項目 65
5.4.3 啟動項目和組件 66
5.4.4 根據路由規則限流 67
5.4.5 根據API分組限流 68
5.4.6 配置服務熔斷效果 69
5.5 通過Gateway實現灰度發布 69
5.5.1 灰度發布的做法 69
5.5.2 準備灰度發布的環境 70
5.5.3 用Gateway實現灰度發布 70
5.5.4 觀察灰度發布的效果 71
5.6 動手練習 72
第6章 聲明式服務調用框架OpenFeign 73
6.1 OpenFeign框架概述 73
6.2 使用OpenFeign框架調用服務 73
6.2.1 基於Nacos的服務提供者 74
6.2.2 OpenFeign調用服務實現代碼 74
6.2.3 觀察OpenFeign的效果 76
6.2.4 設置超時時間 76
6.2.5 設置OpenFeign的日誌級別 77
6.2.6 壓縮請求和返回 78
6.3 實現負載均衡和服務降級 78
6.3.1 搭建業務集群 78
6.3.2 以負載均衡方式調用服務 79
6.3.3 觀察負載均衡效果 80
6.3.4 引入服務降級效果 81
6.4 動手練習 82
第7章 遠端調用組件Dubbo 83
7.1 Dubbo組件概述 83
7.1.1 遠端方法調用流程和Dubbo組件 83
7.1.2 使用Nacos作為註冊中心 84
7.1.3 Dubbo和HTTP調用方式的差別 84
7.2 Dubbo遠端調用範例 85
7.2.1 編寫服務提供者 85
7.2.2 編寫服務調用者 87
7.2.3 定義超時時間和重試次數 88
7.2.4 觀察遠端調用的效果 89
7.3 註冊中心集群和負載均衡 89
7.3.1 系統架構和項目說明 90
7.3.2 實現要點分析 90
7.3.3 觀察負載均衡和高可用效果 92
7.3.4 設置Dubbo負載均衡方式 92
7.4 整合Sentinel引入安全防護 93
7.4.1 服務提供端的限流和熔斷 93
7.4.2 服務提供端的服務降級 96
7.4.3 服務調用端的服務降級 96
7.4.4 Dubbo的安全措施分析 98
7.5 動手練習 98
第8章 Spring Cloud Steam整合消息中間件 100
8.1 消息中間件與Spring Cloud Stream框架 100
8.1.1 RocketMQ消息中間件 100
8.1.2 RabbitMQ消息中間件 101
8.1.3 Spring Cloud Steam封裝消息中間件 102
8.2 Spring Cloud Stream整合RocketMQ 102
8.2.1 搭建RocketMQ環境 102
8.2.2 整合後的消息框架圖 103
8.2.3 編寫消息發送者項目 104
8.2.4 編寫消息接收者項目 106
8.2.5 觀察消息通信效果 108
8.3 Spring Cloud Stream整合RabbitMQ 108
8.3.1 搭建RabbitMQ環境 108
8.3.2 整合後的消息框架圖 109
8.3.3 編寫消息發送者項目 109
8.3.4 編寫消息接收者項目 110
8.3.5 觀察消息通信效果 111
8.4 動手練習 111
第9章 JPA+Redis+MyCat搭建微服務數據庫服務層 113
9.1 用JPA組件操作數據庫 113
9.1.1 JPA訪問數據庫的接口 113
9.1.2 創建MySQL數據庫和數據表 114
9.1.3 通過JPA實現增刪改查功能 114
9.1.4 觀察JPA操作數據庫的效果 118
9.2 微服務整合Redis緩存 119
9.2.1 Redis概述 119
9.2.2 搭建Redis運行環境 120
9.2.3 微服務整合Redis緩存 121
9.2.4 微服務整合MySQL與Redis 124
9.3 微服務整合MyCat分庫組件 129
9.3.1 MyCat分庫組件概述 129
9.3.2 搭建MyCat環境實現分庫效果 130
9.3.3 微服務整合MyCat實現分庫效果 132
9.3.4 微服務整合MyCat和Redis 134
9.4 動手練習 135
第10章 Spring Cloud Alibaba Seata實現分佈式事務 137
10.1 分佈式事務與Seata組件 137
10.1.1 分佈式業務和分佈式事務 137
10.1.2 Seata組件概述 138
10.1.3 搭建Seata服務端開發環境 139
10.2 用Seata實現分佈式事務的範例 141
10.2.1 數據庫和分佈式事務描述 141
10.2.2 開發庫存微服務項目 142
10.2.3 在訂單項目裏實現分佈式事務 147
10.2.4 觀察分佈式事務效果 151
10.3 搭建高可用的Seata集群 152
10.3.1 Spring Cloud整合Seata集群的架構圖 152
10.3.2 搭建Seata集群 153
10.3.3 微服務項目整合Seata集群 156
10.4 動手練習 157
第11章 微服務監控組件Skywalking 158
11.1 服務監控與Skywalking組件 158
11.1.1 微服務監控方面的需求 158
11.1.2 Skywalking組件介紹 159
11.1.3 搭建Skywalking組件運行環境 159
11.2 微服務項目整合Skywalking組件 161
11.2.1 介紹待監控的項目 161
11.2.2 下載並配置agent 161
11.2.3 監控項目運行情況 162
11.3 整合logback監控整條鏈路 164
11.3.1 服務鏈路框架 164
11.3.2 整合logback,定義監控日誌格式 165
11.3.3 觀察鏈路調用的日誌,觀察TID 167
11.4 觀察Skywalking告警效果 168
11.4.1 配置Skywalking告警規則 169
11.4.2 觀察告警效果 170
11.4.3 通過webhooks傳遞告警信息 171
11.5 動手練習 172
第12章 Docker部署Spring Boot項目和微服務組件 174
12.1 Docker與Spring Cloud微服務 174
12.1.1 Docker鏡像、容器和虛擬化管理引擎 174
12.1.2 搭建Docker環境 175
12.1.3 用Docker管理微服務的方式 175
12.2 容器化管理Spring Boot項目 176
12.2.1 準備Spring Boot項目 176
12.2.2 打成jar包 178
12.2.3 用jar包製作鏡像 179
12.2.4 以容器化的方式運行Spring Boot 179
12.3 容器化管理組件 180
12.3.1 容器化管理Nacos組件 180
12.3.2 容器化管理Sentinel 181
12.3.3 通過Docker容器部署MySQL 182
12.3.4 通過Docker容器部署Redis 183
12.4 動手練習 184
第13章 Docker部署Spring Cloud Alibaba微服務項目 185
13.1 員工管理微服務系統架構分析 185
13.1.1 微服務項目的表現形式與優勢 185
13.1.2 基於Docker容器的微服務架構 186
13.1.3 業務功能點與數據表結構 186
13.2 開發員工管理微服務項目 187
13.2.1 開發員工管理模塊 187
13.2.2 開發網關模塊 192
13.3 容器化部署員工管理微服務 194
13.3.1 打包員工管理和網關模塊 194
13.3.2 容器化部署並運行MySQL和Redis 194
13.3.3 容器化部署並運行Nacos和Sentinel 195
13.3.4 容器化部署員工管理模塊 195
13.3.5 容器化部署網關模塊 196
13.3.6 觀察微服務容器化效果 197
13.3.7 引入限流和熔斷措施 198
13.4 擴容與灰度發布 199
13.4.1 演示擴容效果 199
13.4.2 演示灰度發布流程 202
13.5 動手練習 203
第14章 Kubernetes整合Spring Boot 205
14.1 Kubernetes概述 205
14.1.1 Kubernetes的作用 205
14.1.2 準備Kubernetes環境 206
14.1.3 Kubernetes與Docker容器的關系 206
14.1.4 Kubernetes的Service 207
14.1.5 Kubernetes的Labels 207
14.1.6 Deployment的概念 207
14.2 用Kubernetes編排Spring Boot容器 208
14.2.1 基於Spring Boot的Docker容器 208
14.2.2 編寫Service和Deployment配置文件 208
14.2.3 通過命令編排Spring Boot容器 209
14.2.4 觀察Pod、Service和Deployment 210
14.2.5 查看Pod運行日誌 211
14.3 Kubernetes常用實戰技巧 211
14.3.1 刪除Pod、Service和Deployment 211
14.3.2 伸縮節點 212
14.3.3 自動伸縮節點 212
14.3.4 創建Deployment並開放埠 213
14.3.5 進入Pod,執行命令 214
14.4 用Ingress暴露服務 214
14.4.1 Ingress簡介 215
14.4.2 Ingress整合Service的做法 215
14.5 動手練習 216
第15章 用Kubernetes編排Spring Cloud Alibaba微服務 217
15.1 用Kubernetes編排組件 217
15.1.1 編排MySQL 217
15.1.2 編排Redis 220
15.1.3 StatefulSet和Deployment的差別 221
15.1.4 用StatefulSet編排Nacos 222
15.1.5 用StatefulSet編排Sentinel 223
15.2 用Kubernetes編排員工管理模塊 225
15.2.1 微服務框架說明 225
15.2.2 員工管理項目的實現要點 226
15.2.3 編排員工管理微服務模塊 228
15.2.4 觀察Kubernetes編排微服務項目的效果 229
15.2.5 引入限流和熔斷等效果 230
15.2.6 編排微服務項目的實踐要點 231
15.3 動手練習 232
第16章 基於Jenkins的微服務CI/CD實戰 233
16.1 Git工具與持續集成概述 233
16.1.1 持續集成概述 233
16.1.2 搭建Git代碼倉庫 234
16.1.3 安裝Git組件 234
16.1.4 在IDEA裏整合Git 235
16.2 用Git實踐持續集成 236
16.2.1 待管理的項目代碼綜述 236
16.2.2 在Git倉庫中初始化項目 236
16.2.3 在本地獲取遠端項目代碼 238
16.2.4 創建開發分支 239
16.2.5 提交和推送代碼 240
16.2.6 把開發代碼合並到主分支 241
16.3 通過Jenkins實踐持續交付 242
16.3.1 持續交付概述 242
16.3.2 持續交付需求概述 243
16.3.3 在本地搭建Jenkins環境 243
16.3.4 創建Jenkins任務 244
16.3.5 觀察持續交付的實施結果 246
16.4 動手練習 247



