高可靠系統(tǒng)構(gòu)建指南:服務(wù)穩(wěn)定性建設(shè)與技術(shù)債務(wù)治理
定 價:128 元
- 作者:楊彪
- 出版時間:2025/5/1
- ISBN:9787121500527
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP368.5
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:128開
本書以服務(wù)穩(wěn)定性建設(shè)與技術(shù)債務(wù)治理為主線,深度剖析 Java 服務(wù)全生命周期中的關(guān)鍵問題與解決方案,通過"問題診斷-治理框架-實踐落地”的三層遞進結(jié)構(gòu),構(gòu)建了覆蓋技術(shù)架構(gòu)、資金安全、組織效能的完整技術(shù)治理體系。 本書總計7章。第1~2章從Java服務(wù)的常見線上問題切入,系統(tǒng)講解針對內(nèi)存泄漏、線程死鎖、MySQL慢查詢等疑難問題的5why原因分析法與根治方案,并且基于JVM內(nèi)存模型與線程的原理,建立預(yù)防性優(yōu)化機制,其中還講解了"穩(wěn)定性治理三維模型”(意識培養(yǎng)-能力建設(shè)-系統(tǒng)保障),并結(jié)合Prometheus監(jiān)控體系,打造了從被動"救火”到主動防御的高可靠工程體系。第3~5章構(gòu)建了資金安全防護的"雙閉環(huán)”機制,即在業(yè)務(wù)側(cè)通過三流合一、平衡性約束等金融級設(shè)計來確保業(yè)務(wù)邏輯正確,在技術(shù)側(cè)通過分布式事務(wù)、冪等設(shè)計等技術(shù)方案來確保數(shù)據(jù)一致,通過業(yè)業(yè)、業(yè)會、會會、賬實核對來實現(xiàn)資損的分鐘級發(fā)現(xiàn),并且聚焦領(lǐng)域驅(qū)動設(shè)計,通過會員系統(tǒng)建模實戰(zhàn)來演示技術(shù)債務(wù)的治理路徑,講解了彩色建模、事件風(fēng)暴等五大領(lǐng)域建模方法工具箱。第6~7章解構(gòu)高并發(fā)供應(yīng)鏈系統(tǒng)架構(gòu),涵蓋分庫分表、熔斷降級等分布式架構(gòu)的核心模式,特別給出補償事務(wù)、事務(wù)消息等一致性方案的選型決策樹,還整合大模型技術(shù),詳解LangChain等開發(fā)框架與AI編程助手的應(yīng)用,構(gòu)建了從Prompt工程到知識庫設(shè)計的大模型應(yīng)用程序開發(fā)范式。
——楊 彪現(xiàn)任某互聯(lián)網(wǎng)大廠高級架構(gòu)師,阿里巴巴前技術(shù)專家,創(chuàng)業(yè)公司技術(shù)總監(jiān)及合伙人。深耕互聯(lián)網(wǎng)、游戲、金融領(lǐng)域15年,負責(zé)過有億級流量的互聯(lián)網(wǎng)C端項目、有千萬名日活用戶的SaaS產(chǎn)品及多款月流水千萬元以上的游戲研發(fā)項目。曾參與編寫圖書《分布式服務(wù)架構(gòu)》和《可伸縮服務(wù)架構(gòu)》等!詈A廉厴I(yè)于北京大學(xué),現(xiàn)任某互聯(lián)網(wǎng)公司資深搜索技術(shù)專家,有15年互聯(lián)網(wǎng)公司搜索相關(guān)的研發(fā)工作經(jīng)驗。曾參與編寫圖書《可伸縮服務(wù)架構(gòu)》! 波擁有多家一線互聯(lián)網(wǎng)公司的工作經(jīng)驗,曾在京東和阿里巴巴擔(dān)任架構(gòu)師及技術(shù)專家,某創(chuàng)業(yè)公司技術(shù)合伙人。熱衷于研究互聯(lián)網(wǎng)底層技術(shù),在電商、供應(yīng)鏈、客戶關(guān)系管理(CRM)及財務(wù)等領(lǐng)域積累了豐富的架構(gòu)設(shè)計經(jīng)驗。
第1章 Java服務(wù)常見線上問題應(yīng)急攻關(guān)1
1.1 為什么程序員天天都在“救火”1
1.2 Java內(nèi)存案例分析2
1.2.1 案例介紹2
1.2.2 5why原因分析2
1.2.3 類似問題的解決辦法9
1.3 JVM內(nèi)存模型10
1.3.1 JVM的內(nèi)存架構(gòu)10
1.3.2 JVM進程的物理內(nèi)存架構(gòu)11
1.3.3 常見的內(nèi)存問題12
1.3.4 預(yù)防內(nèi)存問題的方法13
1.4 線程死鎖案例分析15
1.4.1 案例介紹15
1.4.2 原因分析16
1.4.3 問題排查16
1.5 Java線程的原理及優(yōu)化方法18
1.5.1 Java線程的狀態(tài)18
1.5.2 Java線程加鎖的原理19
1.5.3 Java線程、本地線程、內(nèi)核線程及JDK線程模型25
1.5.4 如何預(yù)防線程死鎖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 如何預(yù)防MySQL慢查詢44
第2章 服務(wù)穩(wěn)定性治理47
2.1 服務(wù)穩(wěn)定性治理的目標47
2.2 服務(wù)穩(wěn)定性的度量標準47
2.3 服務(wù)穩(wěn)定性治理的方法51
2.4 如何做好服務(wù)穩(wěn)定性治理53
2.4.1 提升團隊的意識53
2.4.2 提升團隊的設(shè)計能力54
2.4.3 提升服務(wù)的可靠性59
2.4.4 提升服務(wù)的可用性61
2.5 服務(wù)穩(wěn)定性可觀測能力建設(shè)66
2.5.1 關(guān)于日志打印的最佳實踐66
2.5.2 使用APM工具進行全鏈路追蹤69
2.5.3 可觀測性指標體系建設(shè)76
2.5.4 搭建Prometheus監(jiān)控系統(tǒng)78
第3章 資損風(fēng)險分析與治理82
3.1 為什么資損事故頻發(fā)82
3.2 資金安全相關(guān)的合規(guī)問題及要求83
3.2.1 二清合規(guī)問題84
3.2.2 三流合一87
3.3 資損的核心指標87
3.3.1 理論資損金額87
3.3.2 實際資損金額87
3.3.3 財務(wù)差異金額88
3.4 資損的核心指標計算規(guī)則88
3.5 如何確保業(yè)務(wù)邏輯正確89
3.5.1 如何確保金額計算無誤89
3.5.2 如何確保額度控制得當91
3.5.3 資金的流動滿足平衡性約束92
3.5.4 如何確保流程狀態(tài)正確93
3.5.5 如何確保時效性93
3.6 如何確保技術(shù)方案正確94
3.6.1 上下游數(shù)據(jù)的一致性94
3.6.2 數(shù)據(jù)庫與緩存數(shù)據(jù)的一致性95
3.6.3 消息隊列中消息處理的正確性96
3.6.4 定時任務(wù)處理的正確性97
3.7 如何避免人為操作風(fēng)險97
3.8 如何及時發(fā)現(xiàn)資損風(fēng)險98
3.8.1 梳理資損鏈路風(fēng)險99
3.8.2 監(jiān)控核對機制102
3.8.3 什么是業(yè)業(yè)核對103
3.8.4 什么是業(yè)會核對109
3.8.5 什么是會會核對111
3.8.6 什么是賬實核對113
3.8.7 核對評估指標113
第4章 通過故障演練主動發(fā)現(xiàn)潛在的風(fēng)險114
4.1 為什么“黑天鵝事件”不斷出現(xiàn)114
4.2 故障演練的類型及方法114
4.2.1 故障演練的類型115
4.2.2 故障演練的方法115
4.3 ChaosBlade的原理與實踐117
4.3.1 ChaosBlade的架構(gòu)118
4.3.2 ChaosBlade的安裝和應(yīng)用119
4.3.3 ChaosBlade支持的調(diào)用方式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的應(yīng)用129
4.5 Redis緩存故障演練案例134
4.5.1 故障演練方案設(shè)計134
4.5.2 常見的緩存優(yōu)化方案138
4.6 MySQL故障演練案例142
4.6.1 故障演練方案設(shè)計142
4.6.2 MySQL高可用實戰(zhàn)145
第5章 會員系統(tǒng)的模型債務(wù)治理156
5.1 技術(shù)債務(wù)產(chǎn)生的原因156
5.2 技術(shù)債務(wù)的治理方法157
5.3 如何做好會員系統(tǒng)的業(yè)務(wù)建模158
5.3.1 會員系統(tǒng)的業(yè)務(wù)分析158
5.3.2 使用用例進行業(yè)務(wù)建模162
5.3.3 會員系統(tǒng)的非功能需求分析165
5.4 如何進行會員系統(tǒng)的領(lǐng)域建模166
5.4.1 關(guān)于領(lǐng)域建模的一些基礎(chǔ)知識166
5.4.2 領(lǐng)域建模方法1:重用和修改現(xiàn)有的模型170
5.4.3 領(lǐng)域建模方法2:用例驅(qū)動設(shè)計172
5.4.4 領(lǐng)域建模方法3:彩色建模(FDD)175
5.4.5 領(lǐng)域建模方法4:領(lǐng)域驅(qū)動設(shè)計179
5.4.6 領(lǐng)域建模方法5:事件風(fēng)暴(Event Storming)184
5.4.7 將設(shè)計模式應(yīng)用于領(lǐng)域模型189
5.5 如何做好會員系統(tǒng)的架構(gòu)設(shè)計190
5.5.1 通過領(lǐng)域驅(qū)動設(shè)計規(guī)劃會員系統(tǒng)的架構(gòu)191
5.5.2 通過領(lǐng)域驅(qū)動設(shè)計實現(xiàn)會員領(lǐng)域模型195
5.5.3 通過適配器和防腐層隔離技術(shù)細節(jié)200
第6章 供應(yīng)鏈系統(tǒng)的架構(gòu)債務(wù)治理205
6.1 為什么客訴和工單不斷205
6.2 餐飲供應(yīng)鏈系統(tǒng)中的問題梳理和分析206
6.2.1 餐飲供應(yīng)鏈系統(tǒng)中的核心業(yè)務(wù)場景206
6.2.2 問題梳理和分析208
6.3 通過領(lǐng)域劃分治理煙囪化服務(wù)210
6.3.1 識別領(lǐng)域210
6.3.2 定義領(lǐng)域模型212
6.3.3 設(shè)計領(lǐng)域服務(wù)212
6.4 分布式系統(tǒng)中的數(shù)據(jù)不一致問題214
6.4.1 數(shù)據(jù)庫分布式事務(wù)215
6.4.2 兩階段提交(2PC)216
6.4.3 三階段提交(3PC)217
6.4.4 補償事務(wù)(TCC)219
6.4.5 事務(wù)消息220
6.4.6 數(shù)據(jù)庫中數(shù)據(jù)一致性的落地方案221
6.5 保障系統(tǒng)上下游鏈路的穩(wěn)定性224
6.5.1 對下游服務(wù)的熔斷降級225
6.5.2 接口調(diào)用限流優(yōu)化228
6.5.3 實現(xiàn)接口冪等機制232
6.6 系統(tǒng)的高并發(fā)性能保障233
6.6.1 數(shù)據(jù)庫的分庫分表設(shè)計234
6.6.2 使用緩存提升服務(wù)并發(fā)性能243
第7章 大模型應(yīng)用程序開發(fā)實戰(zhàn)251
7.1 大模型簡介及其應(yīng)用場景251
7.2 用AI工具提升研發(fā)質(zhì)量和效率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 基于大模型開發(fā)應(yīng)用程序259
7.3.1 基于大模型開發(fā)應(yīng)用程序的流程259
7.3.2 任務(wù)鏈設(shè)計260
7.3.3 Prompt設(shè)計263
7.3.4 知識庫設(shè)計266
7.3.5 評測優(yōu)化270
7.4 大模型應(yīng)用程序開發(fā)框架273
7.4.1 調(diào)用OpenAI API的方法274
7.4.2 LangChain279
7.4.3 Semantic Kernel283
7.4.4 Spring AI285