微服務架構應用系統開發:從入門到落地
- 出版商: 清華大學
- 出版日期: 2026-07-01
- 售價: $654
- 語言: 簡體中文
- ISBN: 7302720762
- ISBN-13: 9787302720768
-
相關分類:
Microservices 微服務
下單後立即進貨 (約4週~6週)
相關主題
商品描述
作者簡介
目錄大綱
目 錄
第1部分 微服務基礎
第1章 概述 2
1.1 什麼是微服務 2
1.2 為什麼使用微服務 2
1.3 使用微服務架構面臨的挑戰 5
1.4 微服務落地 6
1.4.1 正確理解微服務 6
1.4.2 掌握微服務架構的技術基礎 7
1.4.3 重視開發組織的建設與團隊協作 7
1.4.4 選擇適當的開發方法 7
1.5 本書目的、結構和示例 8
1.5.1 本書結構 8
1.5.2 本書示例 8
1.5.3 本書示例的運行環境 9
1.6 本章小結 9
第2章 第一個微服務 10
2.1 構建第一個微服務—BMI計算微服務 10
2.2 容器技術概述 13
2.3 容器環境準備 14
2.3.1 Docker Desktop 14
2.3.2 Docker 15
2.3.3 Containerd 16
2.4 容器化微服務 18
2.4.1 創建DockerFile 18
2.4.2 創建鏡像 20
2.4.3 創建並運行容器 20
2.5 創建私有鏡像庫 22
2.6 使用Docker Compose進行容器編排 23
2.7 本章小結 25
第3章 微服務通信方式 26
3.1 共享數據模式 26
3.2 “請求-應答”模式 28
3.2.1 RESTful API 28
3.2.2 gRPC 28
3.3 事件驅動模式 32
3.3.1 事件驅動模式示例 33
3.3.2 事件驅動與消息隊列的區別和聯系 39
3.4 實時通信 39
3.5 本章小結 42
第4章 微服務應用的架構設計 43
4.1 需求分析 43
4.2 系統架構 44
4.2.1 架構初步設計 45
4.2.2 技術路線 46
4.2.3 關鍵技術 46
4.2.4 支撐技術 47
4.3 服務間協作關系 47
4.3.1 JWT認證的工作流程 47
4.3.2 前端-認證服務 48
4.3.3 前端-用戶管理服務 48
4.3.4 前端-請假管理服務-用戶管理服務 49
4.4 實現架構框架 50
4.4.1 模擬認證服務 50
4.4.2 簡化版用戶管理服務 53
4.4.3 簡化版請假管理服務 56
4.5 前端 58
4.5.1 Vite代理 58
4.5.2 前端架構 60
4.6 部署測試 60
4.7 本章小結 63
第5章 微服務內部架構設計 64
5.1 概述 64
5.2 業務模型模式 65
5.2.1 數學模型 65
5.2.2 數據模型 65
5.2.3 領域模型 66
5.3 微服務內部架構模式 67
5.3.1 領域模型為核心的架構 67
5.3.2 三層架構 71
5.3.3 插件架構 71
5.3.4 管道-過濾器架構 72
5.4 三層架構示例—用戶管理服務架構 73
5.5 領域驅動設計四層架構示例—請假管理服務架構 75
5.5.1 領域層 75
5.5.2 應用層 83
5.5.3 表示層控制器 85
5.5.4 基礎設施層—倉儲實現 85
5.6 本章小結 87
第6章 微服務劃分 88
6.1 示例—俱樂部應用的微服務劃分 88
6.1.1 會員內容服務的建模策略 88
6.1.2 獨立內容服務 89
6.1.3 統一內容服務 90
6.1.4 混合模式 90
6.2 微服務類型 91
6.2.1 面向領域的微服務 92
6.2.2 通用功能微服務 92
6.2.3 業務流程微服務 92
6.2.4 基礎設施微服務 93
6.3 微服務建模的原則 93
6.3.1 業務對齊 93
6.3.2 數據自治 94
6.3.3 粒度適中 95
6.4 微服務建模方法簡介 96
6.4.1 領域驅動設計 96
6.4.2 業務能力映射 98
6.4.3 功能分解 98
6.4.4 工作流/狀態機建模 98
6.5 本章小結 99
第7章 質量屬性需求 100
7.1 質量屬性概述 100
7.2 可用性 101
7.3 可修改性 102
7.4 性能 102
7.5 可部署性 103
7.6 安全性 103
7.7 可測試性 104
7.8 可觀測性 104
7.9 能源效率 105
7.10 本章小結 105
第8章 企業內網的微服務運行環境 106
8.1 企業內網環境的需求分析 106
8.2 DNS服務器 107
8.3 認證服務 109
8.3.1 keycloak的安裝 109
8.3.2 使用腳本導入數據 109
8.3.3 客戶端集成 112
8.3.4 使用受keycloak保護的資源服務器 113
8.4 NFS服務器 114
8.5 私有容器鏡像庫 116
8.6 Kubernetes私有集群 117
8.7 本章小結 118
第2部分 微服務技術進階
第9章 分布式難題 120
9.1 分布式挑戰 120
9.1.1 挑戰1:分布式事務的一致性 120
9.1.2 挑戰2:服務協同的可靠性 121
9.1.3 挑戰3:異常場景的復雜性 121
9.2 CAP定理和BASE理論 121
9.3 協同工作模式 123
9.3.1 兩階段提交 124
9.3.2 三階段提交 124
9.3.3 TCC 124
9.3.4 Saga 125
9.3.5 事件驅動模式 125
9.3.6 異步消息模式 126
9.4 兩階段提交示例 126
9.5 Saga示例 130
9.6 本章小結 134
第10章 搭建Kubernetes私有集群 135
10.1 Kubernetes簡介 135
10.1.1 主要功能 135
10.1.2 Kubernetes的組成 136
10.1.3 基本概念 136
10.1.4 開發環境的Kubernetes 136
10.2 Kubernetes與CAP定理和BASE理論的關系 138
10.2.1 Kubernetes與CAP定理的關系:分層平衡選擇 138
10.2.2 Kubernetes與BASE理論的關系:完全遵循的工程實踐 139
10.3 為什麼要部署Kubernetes私有集群 139
10.4 部署Kubernetes私有集群 140
10.4.1 環境準備 140
10.4.2 安裝容器環境 141
10.4.3 安裝Kubernetes基本組件 143
10.4.4 初始化集群 145
10.4.5 將工作節點加入集群 146
10.5 安裝包管理器Helm 147
10.6 Kubernetes管理 148
10.6.1 原生管理工具kubectl 148
10.6.2 圖形化管理工具Headlamp 149
10.7 本章小結 152
第11章 網關 153
11.1 網關的作用 153
11.2 如何選擇合適的網關 155
11.2.1 輕量級網關 155
11.2.2 成熟框架 156
11.2.3 自研網關 157
11.3 輕量級Nginx網關示例 158
11.3.1 路由轉發:統一入口,隱藏服務地址 158
11.3.2 負載均衡:提升服務可用性 159
11.3.3 認證授權:統一攔截,保護服務安全 159
11.3.4 限流熔斷:防止服務被“沖垮” 160
11.3.5 靜態資源緩存 161
11.3.6 日誌與監控 161
11.4 自研輕量級網關 161
11.4.1 創建服務基本結構 161
11.4.2 路由轉發 163
11.4.3 降級處理 164
11.4.4 負載均衡 164
11.4.5 限流 165
11.4.6 認證 166
11.4.7 響應處理,過濾敏感信息 167
11.4.8 熔斷機制 168
11.5 使用成熟的網關產品 172
11.5.1 環境準備 172
11.5.2 路由轉發:路徑/域名匹配 173
11.5.3 負載均衡:將流量分發到多副本服務 173
11.5.4 認證授權:JWT認證 174
11.5.5 限流:流量控制 175
11.5.6 熔斷:故障隔離 176
11.5.7 降級處理:服務不可用時的兜底響應 176
11.5.8 響應處理:重寫/過濾/壓縮響應 176
11.6 避免網關誤用 177
11.7 本章小結 177
第12章 服務註冊與發現 179
12.1 服務註冊與發現概述 179
12.1.1 為什麼需要服務註冊與發現 179
12.1.2 服務註冊與發現機制的工作過程 180
12.1.3 服務註冊與發現的兩種模式 181
12.2 使用Docker Compose實現服務間的通信 182
12.3 Kubernetes內置的服務發現機制 184
12.3.1 Kubernetes服務發現的實現 184
12.3.2 Kubernetes服務發現的特點 185
12.3.3 服務註冊與發現框架的使用場景 185
12.4 流行的服務註冊與發現框架 187
12.4.1 ZooKeeper 187
12.4.2 Eureka 187
12.4.3 Consul 187
12.4.4 Nacos 188
12.4.5 etcd 188
12.5 服務註冊與發現示例 188
12.6 本章小結 193
第13章 配置管理 194
13.1 配置與配置管理 194
13.2 配置管理原則 196
13.3 不同微服務規模下的配置管理方式 197
13.3.1 小型微服務應用 197
13.3.2 中型微服務應用 197
13.3.3 大型微服務應用 197
13.4 配置管理工具的侵入性分析 198
13.4.1 高度集成與侵入式 198
13.4.2 提供多語言客戶端,中等侵入性 198
13.4.3 協議原生,低侵入性 199
13.4.4 平臺原生,幾乎無侵入性 199
13.5 示例—Kubernetes環境的配置管理 200
13.5.1 基本概念 200
13.5.2 示例Node.js應用 200
13.5.3 將配置數據作為環境變量註入 201
13.5.4 將配置數據保存在文件中,通過掛載加載 203
13.6 本章小結 205
第14章 可觀測性 206
14.1 可觀測性的簡介 206
14.2 可觀測性與架構設計 207
14.2.1 統一上下文貫穿 207
14.2.2 數據標準化與語義一致性 207
14.2.3 平衡侵入式埋點與非侵入式采集 208
14.3 日誌 209
14.3.1 日誌收集 209
14.3.2 日誌聚合 211
14.3.3 日誌查詢與分析 212
14.4 指標 212
14.4.1 監測指標及目的 212
14.4.2 搭建監控環境 212
14.4.3 埋點示例 214
14.5 追蹤 215
14.5.1 代碼插樁 215
14.5.2 追蹤數據的收集、存儲與分析 217
14.6 服務網格技術與可觀測性 217
14.7 本章小結 218
第15章 安全 219
15.1 微服務架構對安全性有利的方面 219
15.2 微服務架構對安全性不利的方面 220
15.3 微服務安全的核心原則 222
15.4 微服務安全技術 223
15.5 示例—內網HTTPS協議實現 224
15.5.1 HTTPS協議概述 224
15.5.2 內網實現HTTPS的難點 225
15.5.3 構建內網CA認證體系(基於OpenSSL) 225
15.5.4 實現內網HTTPS的落地步驟 228
15.5.5 客戶端信任內網根CA 229
15.6 本章小結 230
第16章 測試 231
16.1 面向功能的測試 231
16.2 面向質量屬性的測試 232
16.3 服務測試示例 233
16.4 集成測試示例 235
16.5 性能測試示例 238
16.6 安全測試示例 240
16.7 本章小結 244
第3部分 微服務落地
第17章 理解Kubernetes 246
17.1 私有集群現狀 246
17.2 部署BMI應用 247
17.3 理解Deployment、Pod和Service 249
17.3.1 基本概念 249
17.3.2 關聯邏輯 250
17.3.3 數據流向示例 250
17.3.4 在一個Pod中部署多個容器 250
17.4 理解ConfigMap 251
17.5 部署BMI前端 253
17.5.1 開發簡單的BMI前端 253
17.5.2 使用NFS共享文件 256
17.5.3 部署前端Nginx 257
17.6 理解StorageClass、PV和PVC 258
17.6.1 基本概念 258
17.6.2 StorageClass、PV和PVC的關系 259
17.7 部署MongoDB數據庫 259
17.7.1 存儲敏感信息(Secret) 260
17.7.2 穩定網絡服務(Headless Service) 260
17.7.3 有狀態部署(StatefulSet) 260
17.7.4 創建NodePort類型服務 262
17.7.5 部署與訪問 262
17.8 理解Secret 263
17.8.1 Secret的作用 263
17.8.2 Secret的使用 263
17.8.3 註意事項 264
17.9 理解StatefulSet 265
17.9.1 穩定且唯一的網絡標識 265
17.9.2 持久化存儲與獨立的存儲卷 265
17.9.3 有序的部署、擴展與更新 266
17.10 理解服務類型 266
17.10.1 ClusterIP(默認類型) 266
17.10.2 NodePort 267
17.10.3 LoadBalancer 267
17.10.4 ExternalName 267
17.10.5 Headless Service 268
17.11 本章小結 268
第18章 服務網格 269
18.1 服務網格與Kubernetes的關系 269
18.1.1 Kubernetes的局限 269
18.1.2 服務網格解決的問題 270
18.1.3 服務網格與Kubernetes關系總結 271
18.2 安裝Istio 271
18.2.1 下載並安裝istioctl CLI 271
18.2.2 安裝Istio到Kubernetes集群 272
18.2.3 安裝必要的插件(可觀測性) 272
18.3 示例應用 272
18.3.1 部署示例應用 272
18.3.2 安裝MetalLB支持LoadBalancer類型的服務 273
18.3.3 訪問示例應用 274
18.4 可觀測性工具 274
18.4.1 Prometheus(指標監控) 274
18.4.2 Grafana(可視化儀表盤) 274
18.4.3 Jaeger(分布式追蹤) 275
18.4.4 Kiali(可觀測性儀表盤) 275
18.5 監控與維護 276
18.5.1 使用Kiali進行監控 276
18.5.2 模擬故障 277
18.5.3 生成流量並觀察故障 278
18.5.4 在Kiali中排查故障 279
18.6 網關 280
18.6.1 定位與角色 280
18.6.2 與Kubernetes Ingress的區別 281
18.6.3 網關配置示例 281
18.6.4 高級流量策略示例 283
18.7 本章小結 283
第19章 開發和部署基於Kubernetes集群的微服務應用 284
19.1 可觀測性與安全性的實現方式—基礎設施與代碼編程 284
19.1.1 可觀測性 284
19.1.2 安全性 286
19.1.3 健康檢查 287
19.2 基礎設施準備 287
19.2.1 數據庫 287
19.2.2 文件系統 288
19.2.3 示例—基於NFS的動態PVC 288
19.3 部署文件規範 290
19.3.1 通用結構規範 291
19.3.2 Deployment規範 291
19.3.3 鏡像規範 292
19.3.4 配置管理規範 292
19.3.5 服務暴露規範 292
19.3.6 命名與組織規範 293
19.3.7 可觀測性集成 293
19.4 示例—內網Kubernetes集群配置前端HTTPS 293
19.4.1 創建內部域名的CA證書 293
19.4.2 創建Secret 293
19.4.3 創建Gateway 294
19.5 本章小結 295
第20章 DevOps實踐 296
20.1 概述 296
20.1.1 微服務架構使用DevOps的必要性 296
20.1.2 CI/CD簡介 297
20.1.3 GitOps簡介 297
20.2 安裝GitLab服務器 297
20.2.1 安裝GitLab 297
20.2.2 配置HTTPS 298
20.2.3 啟動容器鏡像庫 299
20.2.4 為Auto DevOps設置域名 299
20.2.5 Kubernetes集群內域名解析 300
20.3 搭建CI/CD流水線 301
20.3.1 流水線工作架構 301
20.3.2 安裝Runner 301
20.3.3 註冊Runner到GitLab實例 302
20.3.4 配置Docker執行器 303
20.3.5 創建測試項目 303
20.3.6 解決鏡像下載耗時問題 306
20.4 完成Kubernetes項目的自動化部署 307
20.4.1 Flux工作原理 307
20.4.2 安裝Flux CLI 308
20.4.3 創建GitLab訪問token 309
20.4.4 執行flux bootstrap命令 310
20.5 本章小結 312
第21章 大語言模型與微服務實踐 313
21.1 微服務使用大語言模型的方式 313
21.1.1 嵌入輕量級模型 313
21.1.2 調用外部大模型API 314
21.2 使用混合架構實現RAG服務 314
21.3 大語言模型的本地部署 315
21.3.1 嵌入式輕量級模型的下載和使用 315
21.3.2 使用Ollama托管大語言模型 316
21.4 解構RAG 317
21.4.1 知識庫生成 317
21.4.2 知識庫檢索增強 320
21.5 RAG微服務的構建 323
21.5.1 問答微服務實現 323
21.5.2 創建鏡像 329
21.5.3 測試容器 330
21.6 本章小結 331
第22章 微前端實踐 332
22.1 傳統前端架構類型 332
22.1.1 獨立前端 332
22.1.2 單體前端+BFF 333
22.1.3 前端聚合 333
22.2 微前端 333
22.2.1 什麼是微前端 334
22.2.2 微前端解決的問題 334
22.2.3 微前端的實現方式 334
22.2.4 微前端的價值、優勢和代價 334
22.3 基於微前端的開發過程 335
22.4 使用Web Component實現微前端 337
22.4.1 Web Component簡介 337
22.4.2 俱樂部應用的前端需求 338
22.4.3 使用Web Component實現業務模塊 339
22.4.4 主頁面與Web Component的集成方式 341
22.5 本章小結 345
第23章 團隊建設 346
23.1 康威定律 346
23.2 微服務應用開發團隊 347
23.2.1 總體架構團隊 347
23.2.2 微服務團隊 347
23.2.3 運維團隊 348
23.3 不同規模的微服務應用在團隊組織上的區別 348
23.3.1 小型系統 348
23.3.2 中型系統 348
23.3.3 大型系統 348
23.4 微服務開發過程與團隊組織的演進 349
23.4.1 總體架構團隊先行 349
23.4.2 按領域而非具體微服務組建開發團隊 349
23.4.3 通過重劃邊界調整團隊職責 349
23.5 通用語言與團隊協作 350
23.5.1 通用語言(Ubiquitous Language,UL)簡介 350
23.5.2 通用語言在團隊內部協作中的作用 350
23.5.3 通用語言在團隊之間協作中的作用 351
23.6 本章小結 352
第24章 AI輔助微服務落地 353
24.1 AI輔助工具的類型 353
24.2 AI輔助工具在微服務架構應用開發各階段的作用 354
24.3 AI輔助工具的使用技巧 356
24.4 AI輔助工具使用示例 356
24.4.1 領域驅動設計相關的開發工作 356
24.4.2 提高代碼質量 358
24.4.3 輔助生成Kubernetes部署代碼 359
24.4.4 關系數據庫到MongoDB的遷移實踐 359
24.4.5 測試框架遷移:從Mocha+Sinon+Chai到Jest 360
24.5 AI輔助工具使用註意事項 360
24.6 本章小結 361
後記—學習微服務架構的好處 362
參考文獻 363



