本書以服務穩定性建設與技術債務治理為主線,深度剖析 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編程助手檢測代碼Bug256
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 LangChain279
7.4.3 Semantic Kernel283
7.4.4 Spring AI285