高可靠系統構建指南:服務穩定性建設與技術債務治理

楊彪,李海亮,王波

  • 出版商: 電子工業
  • 出版日期: 2025-05-01
  • 定價: $768
  • 售價: 8.5$653
  • 語言: 簡體中文
  • ISBN: 7121500523
  • ISBN-13: 9787121500527
  • 尚未上市,歡迎預購

商品描述

本書以服務穩定性建設與技術債務治理為主線,深度剖析 Java 服務全生命周期中的關鍵問題與解決方案,通過“問題診斷-治理框架-實踐落地”的三層遞進結構,構建了覆蓋技術架構、資金安全、組織效能的完整技術治理體系。

本書總計7章。第1~2章從Java服務的常見線上問題切入,系統講解針對內存泄漏、線程死鎖、MySQL慢查詢等疑難問題的5why原因分析法與根治方案,並且基於JVM內存模型與線程的原理,建立預防性優化機制,其中還講解了“穩定性治理三維模型”(意識培養-能力建設-系統保障),並結合Prometheus監控體系,打造了從被動“救火”到主動防禦的高可靠工程體系。第3~5章構建了資金安全防護的“雙閉環”機制,即在業務側通過三流合一、平衡性約束等金融級設計來確保業務邏輯正確,在技術側通過分佈式事務、冪等設計等技術方案來確保數據一致,通過業業、業會、會會、賬實核對來實現資損的分鐘級發現,並且聚焦領域驅動設計,通過會員系統建模實戰來演示技術債務的治理路徑,講解了彩色建模、事件風暴等五大領域建模方法工具箱。第6~7章解構高並發供應鏈系統架構,涵蓋分庫分表、熔斷降級等分佈式架構的核心模式,特別給出補償事務、事務消息等一致性方案的選型決策樹,還整合大模型技術,詳解LangChain等開發框架與AI編程助手的應用,構建了從Prompt工程到知識庫設計的大模型應用程序開發範式。

無論是新手還是經驗豐富的工程師,都能從本書中獲得寶貴的知識和經驗,提高自己解決問題的能力,構建更加穩定和高效的系統服務。

作者簡介

——楊 彪

現任某因特網大廠高級架構師,阿裡巴巴前技術專家,創業公司技術總監及合夥人。深耕因特網、遊戲、金融領域15年,負責過有億級流量的因特網C端項目、有千萬名日活用戶的SaaS產品及多款月流水千萬元以上的遊戲研發項目。曾參與編寫圖書《分佈式服務架構》和《可伸縮服務架構》等。


——李海亮

畢業於北京大學,現任某因特網公司資深搜索技術專家,有15年因特網公司搜索相關的研發工作經驗。曾參與編寫圖書《可伸縮服務架構》。


——王 波

擁有多家一線因特網公司的工作經驗,曾在京東和阿裡巴巴擔任架構師及技術專家,某創業公司技術合夥人。熱衷於研究因特網底層技術,在電商、供應鏈、客戶關系管理(CRM)及財務等領域積累了豐富的架構設計經驗。

目錄大綱

第1章 Java服務常見線上問題應急攻關 1

1.1 為什麽程序員天天都在“救火” 1

1.2 Java內存案例分析 2

1.2.1 案例介紹 2

1.2.2 5why原因分析 2

1.2.3 類似問題的解決辦法 9

1.3 JVM內存模型 10

1.3.1 JVM的內存架構 10

1.3.2 JVM進程的物理內存架構 11

1.3.3 常見的內存問題 12

1.3.4 預防內存問題的方法 13

1.4 線程死鎖案例分析 15

1.4.1 案例介紹 15

1.4.2 原因分析 16

1.4.3 問題排查 16

1.5 Java線程的原理及優化方法 18

1.5.1 Java線程的狀態 18

1.5.2 Java線程加鎖的原理 19

1.5.3 Java線程、本地線程、內核線程及JDK線程模型 25

1.5.4 如何預防線程死鎖 26

1.6 MySQL慢查詢案例分析 27

1.6.1 問題案例 27

1.6.2 5why原因分析 28

1.6.3 MySQL存儲引擎的原理 29

1.6.4 MySQL慢查詢問題排查 41

1.6.5 如何預防MySQL慢查詢 44

第2章 服務穩定性治理 47

2.1 服務穩定性治理的目標 47

2.2 服務穩定性的度量標準 47

2.3 服務穩定性治理的方法 51

2.4 如何做好服務穩定性治理 53

2.4.1 提升團隊的意識 53

2.4.2 提升團隊的設計能力 54

2.4.3 提升服務的可靠性 59

2.4.4 提升服務的可用性 61

2.5 服務穩定性可觀測能力建設 66

2.5.1 關於日誌打印的最佳實踐 66

2.5.2 使用APM工具進行全鏈路追蹤 69

2.5.3 可觀測性指標體系建設 76

2.5.4 搭建Prometheus監控系統 78

第3章 資損風險分析與治理 82

3.1 為什麽資損事故頻發 82

3.2 資金安全相關的合規問題及要求 83

3.2.1 二清合規問題 84

3.2.2 三流合一 87

3.3 資損的核心指標 87

3.3.1 理論資損金額 87

3.3.2 實際資損金額 87

3.3.3 財務差異金額 88

3.4 資損的核心指標計算規則 88

3.5 如何確保業務邏輯正確 89

3.5.1 如何確保金額計算無誤 89

3.5.2 如何確保額度控制得當 91

3.5.3 資金的流動滿足平衡性約束 92

3.5.4 如何確保流程狀態正確 93

3.5.5 如何確保時效性 93

3.6 如何確保技術方案正確 94

3.6.1 上下遊數據的一致性 94

3.6.2 數據庫與緩存數據的一致性 95

3.6.3 消息隊列中消息處理的正確性 96

3.6.4 定時任務處理的正確性 97

3.7 如何避免人為操作風險 97

3.8 如何及時發現資損風險 98

3.8.1 梳理資損鏈路風險 99

3.8.2 監控核對機制 102

3.8.3 什麽是業業核對 103

3.8.4 什麽是業會核對 109

3.8.5 什麽是會會核對 111

3.8.6 什麽是賬實核對 113

3.8.7 核對評估指標 113

第4章 通過故障演練主動發現潛在的風險 114

4.1 為什麽“黑天鵝事件”不斷出現 114

4.2 故障演練的類型及方法 114

4.2.1 故障演練的類型 115

4.2.2 故障演練的方法 115

4.3 ChaosBlade的原理與實踐 117

4.3.1 ChaosBlade的架構 118

4.3.2 ChaosBlade的安裝和應用 119

4.3.3 ChaosBlade支持的調用方式 120

4.3.4 ChaosBlade中的常用命令 121

4.3.5 ChaosBlade的原理 123

4.4 ChaosBlade-Box故障演練管理平臺 126

4.4.1 ChaosBlade-Box的安裝 127

4.4.2 ChaosBlade-Box的應用 129

4.5 Redis緩存故障演練案例 134

4.5.1 故障演練方案設計 134

4.5.2 常見的緩存優化方案 138

4.6 MySQL故障演練案例 142

4.6.1 故障演練方案設計 142

4.6.2 MySQL高可用實戰 145

第5章 會員系統的模型債務治理 156

5.1 技術債務產生的原因 156

5.2 技術債務的治理方法 157

5.3 如何做好會員系統的業務建模 158

5.3.1 會員系統的業務分析 158

5.3.2 使用用例進行業務建模 162

5.3.3 會員系統的非功能需求分析 165

5.4 如何進行會員系統的領域建模 166

5.4.1 關於領域建模的一些基礎知識 166

5.4.2 領域建模方法1:重用和修改現有的模型 170

5.4.3 領域建模方法2:用例驅動設計 172

5.4.4 領域建模方法3:彩色建模(FDD) 175

5.4.5 領域建模方法4:領域驅動設計 179

5.4.6 領域建模方法5:事件風暴(Event Storming) 184

5.4.7 將設計模式應用於領域模型 189

5.5 如何做好會員系統的架構設計 190

5.5.1 通過領域驅動設計規劃會員系統的架構 191

5.5.2 通過領域驅動設計實現會員領域模型 195

5.5.3 通過適配器和防腐層隔離技術細節 200

第6章 供應鏈系統的架構債務治理 205

6.1 為什麽客訴和工單不斷 205

6.2 餐飲供應鏈系統中的問題梳理和分析 206

6.2.1 餐飲供應鏈系統中的核心業務場景 206

6.2.2 問題梳理和分析 208

6.3 通過領域劃分治理煙囪化服務 210

6.3.1 識別領域 210

6.3.2 定義領域模型 212

6.3.3 設計領域服務 212

6.4 分佈式系統中的數據不一致問題 214

6.4.1 數據庫分佈式事務 215

6.4.2 兩階段提交(2PC) 216

6.4.3 三階段提交(3PC) 217

6.4.4 補償事務(TCC) 219

6.4.5 事務消息 220

6.4.6 數據庫中數據一致性的落地方案 221

6.5 保障系統上下遊鏈路的穩定性 224

6.5.1 對下遊服務的熔斷降級 225

6.5.2 接口調用限流優化 228

6.5.3 實現接口冪等機制 232

6.6 系統的高並發性能保障 233

6.6.1 數據庫的分庫分表設計 234

6.6.2 使用緩存提升服務並發性能 243

第7章 大模型應用程序開發實戰 251

7.1 大模型簡介及其應用場景 251

7.2 用AI工具提升研發質量和效率 252

7.2.1 AI編程助手簡介 252

7.2.2 使用AI編程助手自動補全代碼 255

7.2.3 使用AI編程助手檢測代碼Bug 256

7.2.4 使用AI編程助手生成單元測試代碼 258

7.2.5 使用AI編程助手做代碼評審 259

7.3 基於大模型開發應用程序 259

7.3.1 基於大模型開發應用程序的流程 259

7.3.2 任務鏈設計 260

7.3.3 Prompt設計 263

7.3.4 知識庫設計 266

7.3.5 評測優化 270

7.4 大模型應用程序開發框架 273

7.4.1 調用OpenAI API的方法 274

7.4.2 LangChain 279

7.4.3 Semantic Kernel 283

7.4.4 Spring AI 285