微服務架構應用系統開發:從入門到落地

  • 出版商: 清華大學
  • 出版日期: 2026-07-01
  • 售價: $654
  • 語言: 簡體中文
  • ISBN: 7302720762
  • ISBN-13: 9787302720768
  • 相關分類: Microservices 微服務
  • 下單後立即進貨 (約4週~6週)

  • 微服務架構應用系統開發:從入門到落地-preview-1
  • 微服務架構應用系統開發:從入門到落地-preview-2
  • 微服務架構應用系統開發:從入門到落地-preview-3
微服務架構應用系統開發:從入門到落地-preview-1

相關主題

商品描述

"在雲計算技術迅猛發展的今天,微服務架構正成為企業構建現代應用系統的**方案。《微服務架構應用系統開發:從入門到落地》系統性地介紹微服務架構的核心技術與實踐路徑,為軟件開發人員提供從理論到落地的完整指南。 《微服務架構應用系統開發:從入門到落地》分為3個部分:第1部分(第1~8章)聚焦微服務基礎,通過實際案例解析微服務的基礎概念、架構設計流程、服務通信機制、容器化技術及服務劃分方法;第2部分(第9~16章)深入微服務進階領域,講解分布式系統原理、API網關、服務註冊與發現、配置中心、可觀測性體系、安全機制及測試策略等關鍵技術;第3部分(第17~24章)探討微服務的落地實踐,包括Kubernetes集群部署、服務網格技術應用、DevOps實踐、大語言模型集成及微前端架構實現等前沿內容。 《微服務架構應用系統開發:從入門到落地》采用理論與實踐相結合的方式,通過豐富的案例分析和操作指導,幫助讀者掌握從設計到實施完整的微服務架構知識體系。無論是希望了解微服務基礎概念的新手,還是尋求進階解決方案的資深開發者,都能從《微服務架構應用系統開發:從入門到落地》中獲得有價值的參考。"

作者簡介

甄鐳,同濟大學學士,北京科技大學碩士。1996年開始從事企業信息系統開發和建設工作,涉及石化、政務、汽車制造、機械制造、電力、房地產等諸多領域,參與過多項國家級重大項目。在PLOP會議等發表過多篇論文。著有《領域驅動設計.Net實踐》《軟件架構從微觀到宏觀》等。

目錄大綱

目    錄

第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