作 者:餘春龍 著
定 價:105
出 版 社:電子工業出版社
出版日期:2022年01月01日
頁 數:320
裝 幀:平裝
ISBN:9787121425073
"作者權威,《軟件架構設計》《Java並發實現原理:JDK源碼剖析》作者,互聯網公司架構師。?內容豐富,繫統化地闡述了構建大型分布式繫統所需要的技術架構與業務架構方法論,並輔與詳盡的實踐案例剖析。?體繫完整,從分布式架構的幾大核心問題入手,過渡到業務架構思維、需求分析、業務建模、領域驅動設計與微服務等,探討業務架構,最後通過眾多的業界實際案例來對理論有一個更為直觀的介紹。"
●第1部分分布式架構
第1章高並發4
1.1問題分類4
1.1.1側重於“高並發讀”的繫統4
1.1.2側重於“高並發寫”的繫統6
1.1.3同時側重於“高並發讀”和“高並發寫”的繫統7
1.2高並發讀8
1.2.1策略1:動靜分離與CDN加速8
1.2.2策略2:加緩存9
1.2.3策略3:並發讀與Pipeline10
1.2.4策略4:批量讀12
1.2.5策略5:重寫輕讀12
1.2.6總結:讀寫分離(CQRS架構)14
1.3高並發寫16
1.3.1策略1:數據分片16
1.3.2策略2:任務分片17
1.3.3策略3:異步化與Pipeline19
1.3.4策略4:批量26
1.3.5策略5:串行化+多進程單線程+異步I/O27
第2章高可靠29
2.1容量評估與規劃29
2.1.1理論基礎:吞吐量、響應時間與並發數三者關繫29
2.1.2容量規劃31
2.1.3單機優選QPS估算方法1:CPU密集型與I/O密集型的區分32
2.1.4單機優選QPS估算方法2:壓力測試33
2.2過載保護:限流與熔斷35
2.2.1限流的兩種維度35
2.2.2單機限流的算法35
2.2.3單機限流的實現37
2.2.4中央限流40
2.2.5熔斷41
2.3超時與重試42
2.4隔離43
2.5有損服務與降級44
2.6灰度發布、備份與回滾45
2.7監控體繫與日志報警47
第3章分布式事務50
3.1隨處可見的分布式事務問題51
3.1.1緩存和數據庫的一致性問題51
3.1.2消息中間件和數據庫的一致性問題51
3.1.3兩個數據庫的一致性問題51
3.1.4服務和數據庫的一致性問題51
3.1.5兩個服務的一致性問題52
3.1.6兩個文件的一致性問題52
3.2分布式事務解決方案彙總52
3.2.12PC52
3.2.2最終一致性:第一種實現方案56
3.2.3最終一致性:第二種實現方案(基於事務消息)59
3.2.4TCC61
3.2.5事務狀態表+事務補償63
3.2.6同步雙寫(多寫)+異步對賬64
3.2.7妥協方案:弱一致性+基於狀態的事後補償66
3.2.8妥協方案:重試+回滾+報警+人工修復68
3.2.9阿裡雲Seata框架68
3.2.10總結73
第4章高可用74
4.1高可用架構的思維框架74
4.1.1如何實現故障探測75
4.1.2如何解決腦裂問題75
4.1.3如何做到數據一致性76
4.1.4如何做到對客戶端透明76
4.1.5如何解決高可用依賴的連環套問題76
4.2接入層高可用78
4.2.1DNS層高可用:廣域網負載均衡79
4.2.2接入網關高可用:局域網負載均衡79
4.2.3Nginx高可用81
4.2.4Tomcat高可用81
4.3業務邏輯層(微服務層)高可用82
4.4存儲層高可用83
4.4.1RedisCluster的高可用案例83
4.4.2HDFS的高可用案例85
第5章高可用:多副本一致性算法89
5.1高可用且強一致性到底有多難89
5.1.1Kafka的消息丟失問題89
5.1.2Kafka的消息錯亂問題93
5.1.3MySQL半同步復制數據不一致問題94
5.2Paxos算法解析96
5.2.1Paxos解決什麼問題96
5.2.2復制狀態機99
5.2.3一個樸素而深刻的想法101
5.2.4BasicPaxos算法102
5.2.5 ltiPaxos算法105
5.3Raft算法解析108
5.3.1為“可理解性”而設計108
5.3.2單點寫入108
5.3.3日志結構109
5.3.4階段1:Leader選舉113
5.3.5階段2:日志復制115
5.3.6階段3:恢復階段116
5.3.7安全性保證116
5.4Zab算法解析119
5.4.1復制狀態機與Primary-BackupSystem119
5.4.2zxid121
5.4.3“序”:亂序提交與順序提交122
5.4.4Leader選舉:FLE算法124
5.4.5正常階段:2階段提交125
5.4.6恢復階段126
5.5三種算法對比與工程實現127
第6章高可用:跨城容災與異地多活129
6.1跨城的關鍵物理約束:時延129
6.2多IDC無復制架構130
6.2.1單寫多讀架構130
6.2.2各IDC自治架構132
6.3同城同步復制,跨城異步復制:2地3中心133
6.4跨城同步復制:3地5中心133
6.5跨城異步復制135
6.5.1不能容忍數據不一致:實現部分的強一致136
6.5.2可以容忍數據不一致:事後修復137
6.5.3加快異步復制速度137
6化138
6.6.1到底什化138
6.6.2什麼繫統化140
第7章CAP理論142
7.1CAP理論的誤解142
7.2現實世界不存在“強一致性”(PACELC理論)143
第2部分業務架構
第8章業務架構定義148
8.1各式各樣的方法論148
8.2什麼不是業務架構149
8.3以終為始:業務架構到底解決哪些問題150
第9章深刻理解現實世界:識別“真正的”需求153
9.1探究問題的本源153
9.2繫統化思維154
9.3信息傳播的遞減效應155
9.4主要矛盾與次要矛盾156
9.5產品手段與技術手段的權衡156
第10章深刻理解現實世界:從整體上去看待需求158
10.1利益相關者分析:看需求先看人158
10.2金字塔原理:不重不漏地拆解問題160
10.3需求的兩種表現形式:業務流程與業務規則162
10.4“業務”的閉環性163
第11章不同粒度的建模方法與原則165
11.1單個繫統內部的建模方法與原則165
11.1.1建模的通用思維:搭積木165
11.1.2面向對像建模的基本步驟167
11.2問題空間169
11.2.1深刻理解專業名詞169
11.2.2重要信息“顯性化”170
11.2.3抽像171
11.3解決方案空間174
11.3.1重構174
11.3.2設計模式175
11.3.3面向對像的五大原則(SOLID原則)178
11.4跨繫統、跨團隊的建模方法與原則179
11.4.1康威定律179
11.4.2領域的劃分:高內聚與低耦合181
11.4.3邊界思維:接口的設計比實現重要得多182
11.4.4多視角描述同一個架構:架構4+1/5+1視圖184
第12章常用架構模式186
12.1分層架構模式與“偽分層”186
12.2管道-過濾器架構模式189
12.3狀態機架構模式190
12.4業務切面/業務閉環架構模式192
12.5規則引擎193
12.5.1什麼是規則194
12.5.2業務代碼如何抽像成一條條規則194
12.5.3規則描述語言DSL196
12.5.4規則引擎的兩種執行方式197
12.6工作流引擎198
第13章領域驅動設計200
13.1傳統開發模式:面向數據庫表的“面條式”代碼200
13.2DDD的基本概念201
13.3DDD的方法論203
13.3.1領域模型和數據模型的區別203
13.3.2基於DDD的分層架構203
13.3.3領域模型和數據模型如何映射204
13.3.4DDD中的讀寫分離模式206
第14章DDD的折中與微服務架構207
14.1軟件建模本身的困難207
14.2“無建模”帶來的各種問題209
14.3DDD的困難210
14.4折中後的DDD211
14.4.1宏觀層面:遵循子域、限界上下文、微服務三者的映射關繫211
14.4.2微觀層面:不遵循DDD的方法論212
14.5三個不同層次的讀寫分離架構212
第3部分案例實戰
第15章基礎架構案例實戰216
15.1分布式鎖216
15.1.1分布式鎖的使用場景216
15.1.2分布式鎖的常用實現方式與問題216
15.1.3用串行化代替分布式鎖217
15.2服務注冊與服務發現中心219
15.2.1服務注冊與服務發現中心的基本原理219
15.2.2服務路由表的數據延遲與解決方案220
15.2.3服務注冊中心應該是AP繫統,還是CP繫統221
15.2.4配置中心應該是AP繫統,還是CP繫統222
15.3分布式ID生成繫統222
15.3.1全局專享,趨勢遞增223
15.3.2全局專享,單調遞增225
15.3.3全局專享,連續遞增229
第16章C端業務繫統案例實戰230
16.1電商庫存繫統230
16.1.1業務背景與需求分析230
16.1.2高並發讀與寫:中央緩存與本地緩存的權衡234
16.1.3數據一致性:冪等問題238
16.1.4數據一致性:扣減多個商品的原子性問題239
16.1.5數據一致性:並發更新的鎖問題239
16.1.6數據一致性:流水和庫存表如何對賬240
16.1.7業務架構進階之一:一個庫存模型同時支持自營與平臺
兩個商業模式241
16.1.8業務架構進階之二:分區售賣問題243
16.1.9業務架構進階之三:供應鏈庫存(不光要管售賣,還要管采購)244
16.1.10業務架構進階之四:以“單據”為中心的庫存對賬245
16.1.11業務架構進階之五:先采後賣,還是先賣後采247
16.2繫統249
16.2.1需求分析249
16.2.2異步與同步250
16.2.3同步繫統的設計252
16.2.4防刷問題253
16.2.5名額歸還問題254
16.2.6同步與異步的相結合254
16.2.7層層限流,保護最終的核心繫統255
16.3Feeds流255
16.3.1需求分析255
16.3.2無限長列表的實現256
16.3.3寫擴散和讀擴散的相結合258
16.3.4評論的實現259
第17章B端業務繫統案例實戰261
17.1規則引擎平臺261
17.1.1規則引擎的典型應用場景261
17.1.2四種技術選型263
17.1.3規則的存儲與版本管理265
17.1.4可視化規則編輯266
17.1.5特征庫、動作庫管理268
17.1.6特征數據庫269
17.1.7總結270
17.2工作流引擎平臺271
17.2.1沒有工作流引擎,如何做業務開發271
17.2.2工作流引擎的基本思路273
17.2.3工作流引擎與微服務編排引擎、分布式事務的Saga模式的區別與聯繫274
17.2.4BPMN標準278
17.2.5工作流引擎的技術選型與Activiti介紹281
17.2.6對Activiti的裁剪283
17.2.7Activiti的性能問題與對Activiti的擴展284
17.2.8工作流引擎與微服務/DDD方法論的衝突285
17.3權限管理繫統286
17.3.1權限管理繫統的由來286
17.3.2權限如何抽像:權限Code287
17.3.3權限的進一步抽像288
17.3.4權限模型289
17.3.5權限繫統的實現方式289
17.3.6API權限與微服務鋻權292
第18章大數據與中臺案例實戰295
18.1嚴格區分在線業務邏輯與離線業務邏輯295
18.2警惕後臺離線任務298
18.3合理利用大數據交互式查詢引擎300
18.4中臺301
18.4.1什麼不是中臺301
18.4.2業務中臺303
18.4.3數據中臺304
18.4.4中臺和組織架構307
本書深刻總結了作者在大型互聯網公司長期的實戰經驗,繫統闡述了構建大型分布式繫統所需要的技術架構與業務架構方法論,並進行了詳盡的實踐剖析。全書分為三大部分:第1部分完整討論了分布式架構的幾大核心問題,包括高並發、高可靠、高可用、數據一致性(包括分布式事務、Paxos/Raft一致性算法)、跨城容災與異地多活、CAP理論;第2部分從業務架構思維、需求分析、業務建模、領域驅動設計與微服務等角度探討業務架構;第3部分是案例實戰,通過眾多的業界實際案例對理論有更為直觀的介紹。通過本書,讀者可以對構建大型分布式繫統的方法論有全局的認識,對軟件架構的核心能力有深刻的理解,對個人的技術成長起到一定的借鋻作用,提升思維認知。本書不僅適合工程師、架構師閱讀,也適合包括企業繫統開發人員在內的軟件開發從業人員閱讀。