注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡網(wǎng)絡與數(shù)據(jù)通信架構設計2.0:大型分布式系統(tǒng)架構方法論與實踐

架構設計2.0:大型分布式系統(tǒng)架構方法論與實踐

架構設計2.0:大型分布式系統(tǒng)架構方法論與實踐

定 價:¥105.00

作 者: 余春龍 著
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 暫缺

ISBN: 9787121425073 出版時間: 2021-12-01 包裝: 平裝
開本: 16開 頁數(shù): 320 字數(shù):  

內(nèi)容簡介

  本書深刻總結了作者在大型互聯(lián)網(wǎng)公司長期的實戰(zhàn)經(jīng)驗,系統(tǒng)化地闡述了構建大型分布式系統(tǒng)所需要的技術架構與業(yè)務架構方法論,并輔與詳盡的實踐剖析。全書分為三大部分:第1部分完整討論了分布式架構的幾大核心問題,包括高并發(fā)、高可靠性、高可用、數(shù)據(jù)一致性(包括分布式事務、Paxos/Raft一致性算法)、跨城容災與異地多活、CAP理論;第2部分從業(yè)務架構思維、需求分析、業(yè)務建模、領域驅(qū)動設計與微服務等角度探討業(yè)務架構;第3部分是案例實戰(zhàn),通過眾多的業(yè)界實際案例來對理論有一個更為直觀的介紹。通過本書,讀者可以對構建大型復雜系統(tǒng)的方法論有全局的認識,對軟件架構的核心能力有深刻的理解,對個人的技術成長起到一定的借鑒作用,提升思維認知。本書不僅適合工程師、架構師閱讀,也適合企業(yè)系統(tǒng)開發(fā)人員在內(nèi)的軟件開發(fā)從業(yè)人員閱讀。

作者簡介

  余春龍,中科院軟件所碩士畢業(yè),先后在多家一線互聯(lián)網(wǎng)公司任架構師,歷經(jīng)各種大規(guī)模研發(fā)團隊的架構實踐,在海量高并發(fā)高可用架構、業(yè)務建模、領域驅(qū)動設計、技術規(guī)劃與技術管理等方面具備豐富的工程經(jīng)驗,形成了自己完整的一套架構方法論。

圖書目錄

第1部分 分布式架構
第1章 高并發(fā)\t4
1.1 問題分類\t4
1.1.1 側重于“高并發(fā)讀”的系統(tǒng)\t4
1.1.2 側重于“高并發(fā)寫”的系統(tǒng)\t6
1.1.3 同時側重于“高并發(fā)讀”和“高并發(fā)寫”的系統(tǒng)\t7
1.2 高并發(fā)讀\t8
1.2.1 策略1:動靜分離與CDN加速\t8
1.2.2 策略2:加緩存\t9
1.2.3 策略3:并發(fā)讀與Pipeline\t10
1.2.4 策略4:批量讀\t12
1.2.5 策略5:重寫輕讀\t12
1.2.6 總結:讀寫分離(CQRS架構)\t14
1.3 高并發(fā)寫\t16
1.3.1 策略1:數(shù)據(jù)分片\t16
1.3.2 策略2:任務分片\t17
1.3.3 策略3:異步化與Pipeline\t19
1.3.4 策略4:批量\t26
1.3.5 策略5:串行化+多進程單線程+異步I/O\t27
第2章 高可靠\t29
2.1 容量評估與規(guī)劃\t29
2.1.1 理論基礎:吞吐量、響應時間與并發(fā)數(shù)三者關系\t29
2.1.2 容量規(guī)劃\t31
2.1.3 單機最大QPS估算方法1: CPU密集型與I/O密集型的區(qū)分\t32
2.1.4 單機最大QPS估算方法2:壓力測試\t33
2.2 過載保護:限流與熔斷\t35
2.2.1 限流的兩種限制維度\t35
2.2.2 單機限流的算法\t35
2.2.3 單機限流的實現(xiàn)\t37
2.2.4 中央限流\t40
2.2.5 熔斷\t41
2.3 超時與重試\t42
2.4 隔離\t43
2.5 有損服務與降級\t44
2.6 灰度發(fā)布、備份與回滾\t45
2.7 監(jiān)控體系與日志報警\t47
第3章 分布式事務\t50
3.1 隨處可見的分布式事務問題\t51
3.1.1 緩存和數(shù)據(jù)庫的一致性問題\t51
3.1.2 消息中間件和數(shù)據(jù)庫的一致性問題\t51
3.1.3 兩個數(shù)據(jù)庫的一致性問題\t51
3.1.4 服務和數(shù)據(jù)庫的一致性問題\t51
3.1.5 兩個服務的一致性問題\t52
3.1.6 兩個文件的一致性問題\t52
3.2 分布式事務解決方案匯總\t52
3.2.1 2PC\t52
3.2.2 最終一致性:第一種實現(xiàn)方案\t56
3.2.3 最終一致性:第二種實現(xiàn)方案(基于事務消息)\t59
3.2.4 TCC\t61
3.2.5 事務狀態(tài)表+事務補償\t63
3.2.6 同步雙寫(多寫)+異步對賬\t64
3.2.7 妥協(xié)方案:弱一致性+基于狀態(tài)的事后補償\t66
3.2.8 妥協(xié)方案:重試+回滾+報警+人工修復\t68
3.2.9 阿里云Seata框架\t68
3.2.10 總結\t73
第4章 高可用\t74
4.1 高可用架構的思維框架\t74
4.1.1 如何實現(xiàn)故障探測\t75
4.1.2 如何解決腦裂問題\t75
4.1.3 如何做到數(shù)據(jù)一致性\t76
4.1.4 如何做到對客戶端透明\t76
4.1.5 如何解決高可用依賴的連環(huán)套問題\t76
4.2 接入層高可用\t78
4.2.1 DNS層高可用:廣域網(wǎng)負載均衡\t79
4.2.2 接入網(wǎng)關高可用:局域網(wǎng)負載均衡\t79
4.2.3 Nginx高可用\t81
4.2.4 Tomcat高可用\t81
4.3 業(yè)務邏輯層(微服務層)高可用\t82
4.4 存儲層高可用\t83
4.4.1 RedisCluster的高可用案例\t83
4.4.2 HDFS的高可用案例\t85
第5章 高可用:多副本一致性算法\t89
5.1 高可用且強一致性到底有多難\t89
5.1.1 Kafka的消息丟失問題\t89
5.1.2 Kafka的消息錯亂問題\t93
5.1.3 MySQL半同步復制數(shù)據(jù)不一致問題\t94
5.2 Paxos算法解析\t96
5.2.1 Paxos解決什么問題\t96
5.2.2 復制狀態(tài)機\t99
5.2.3 一個樸素而深刻的想法\t101
5.2.4 Basic Paxos算法\t102
5.2.5 Multi Paxos算法\t105
5.3 Raft算法解析\t108
5.3.1 為“可理解性”而設計\t108
5.3.2 單點寫入\t108
5.3.3 日志結構\t109
5.3.4 階段1:Leader選舉\t113
5.3.5 階段2:日志復制\t115
5.3.6 階段3:恢復階段\t116
5.3.7 安全性保證\t116
5.4 Zab算法解析\t119
5.4.1 復制狀態(tài)機與Primary-Backup System\t119
5.4.2 zxid\t121
5.4.3 “序”:亂序提交與順序提交\t122
5.4.4 Leader選舉:FLE算法\t124
5.4.5 正常階段:2階段提交\t125
5.4.6 恢復階段\t126
5.5 三種算法對比與工程實現(xiàn)\t127
第6章 高可用:跨城容災與異地多活\t129
6.1 跨城的關鍵物理約束:時延\t129
6.2 多IDC無復制架構\t130
6.2.1 單寫多讀架構\t130
6.2.2 各IDC自治架構\t132
6.3 同城同步復制,跨城異步復制:2地3中心\t133
6.4 跨城同步復制:3地5中心\t133
6.5 跨城異步復制\t135
6.5.1 不能容忍數(shù)據(jù)不一致:實現(xiàn)部分的強一致\t136
6.5.2 可以容忍數(shù)據(jù)不一致:事后修復\t137
6.5.3 加快異步復制速度\t137
6.6 單元化\t138
6.6.1 到底什么是單元化\t138
6.6.2 什么系統(tǒng)不能單元化\t140
第7章 CAP理論\t142
7.1 CAP理論的誤解\t142
7.2 現(xiàn)實世界不存在“強一致性”(PACELC理論)\t143
第2部分 業(yè)務架構
第8章 業(yè)務架構定義\t148
8.1 各式各樣的方法論\t148
8.2 什么不是業(yè)務架構\t149
8.3 以終為始:業(yè)務架構到底解決哪些問題\t150
第9章 深刻理解現(xiàn)實世界:識別“真正的”需求\t153
9.1 探究問題的本源\t153
9.2 系統(tǒng)化思維\t154
9.3 信息傳播的遞減效應\t155
9.4 主要矛盾與次要矛盾\t156
9.5 產(chǎn)品手段與技術手段的權衡\t156
第10章 深刻理解現(xiàn)實世界:從整體上去看待需求\t158
10.1 利益相關者分析:看需求先看人\t158
10.2 金字塔原理:不重不漏地拆解問題\t160
10.3 需求的兩種表現(xiàn)形式:業(yè)務流程與業(yè)務規(guī)則\t162
10.4 “業(yè)務”的閉環(huán)性\t163
第11章 不同粒度的建模方法與原則\t165
11.1 單個系統(tǒng)內(nèi)部的建模方法與原則\t165
11.1.1 建模的通用思維:搭積木\t165
11.1.2 面向?qū)ο蠼5幕静襟E\t167
11.2 問題空間\t169
11.2.1 深刻理解專業(yè)名詞\t169
11.2.2 重要信息“顯性化”\t170
11.2.3 抽象\t171
11.3 解決方案空間\t174
11.3.1 重構\t174
11.3.2 設計模式\t175
11.3.3 面向?qū)ο蟮奈宕笤瓌t(SOLID原則)\t178
11.4 跨系統(tǒng)、跨團隊的建模方法與原則\t179
11.4.1 康威定律\t179
11.4.2 領域的劃分:高內(nèi)聚與低耦合\t181
11.4.3 邊界思維:接口的設計比實現(xiàn)重要得多\t182
11.4.4 多視角描述同一個架構:架構4+1/5+1視圖\t184
第12章 常用架構模式\t186
12.1 分層架構模式與“偽分層”\t186
12.2 管道-過濾器架構模式\t189
12.3 狀態(tài)機架構模式\t190
12.4 業(yè)務切面/業(yè)務閉環(huán)架構模式\t192
12.5 規(guī)則引擎\t193
12.5.1 什么是規(guī)則\t194
12.5.2 業(yè)務代碼如何抽象成一條條規(guī)則\t194
12.5.3 規(guī)則描述語言DSL\t196
12.5.4 規(guī)則引擎的兩種執(zhí)行方式\t197
12.6 工作流引擎\t198
第13章 領域驅(qū)動設計\t200
13.1 傳統(tǒng)開發(fā)模式:面向數(shù)據(jù)庫表的“面條式”代碼\t200
13.2 DDD的基本概念\t201
13.3 DDD的方法論\t203
13.3.1 領域模型和數(shù)據(jù)模型的區(qū)別\t203
13.3.2 基于DDD的分層架構\t203
13.3.3 領域模型和數(shù)據(jù)模型如何映射\t204
13.3.4 DDD中的讀寫分離模式\t206
第14章 DDD的折中與微服務架構\t207
14.1 軟件建模本身的困難\t207
14.2 “無建?!睅淼母鞣N問題\t209
14.3 DDD的困難\t210
14.4 折中后的DDD\t211
14.4.1 宏觀層面:遵循子域、限界上下文、微服務三者的映射關系\t211
14.4.2 微觀層面:不遵循DDD的方法論\t212
14.5 三個不同層次的讀寫分離架構\t212
第3部分 案例實戰(zhàn)
第15章 基礎架構案例實戰(zhàn)\t216
15.1 分布式鎖\t216
15.1.1 分布式鎖的使用場景\t216
15.1.2 分布式鎖的常用實現(xiàn)方式與問題\t216
15.1.3 用串行化代替分布式鎖\t217
15.2 服務注冊與服務發(fā)現(xiàn)中心\t219
15.2.1 服務注冊與服務發(fā)現(xiàn)中心的基本原理\t219
15.2.2 服務路由表的數(shù)據(jù)延遲與解決方案\t220
15.2.3 服務注冊中心應該是AP系統(tǒng),還是CP系統(tǒng)\t221
15.2.4 配置中心應該是AP系統(tǒng),還是CP系統(tǒng)\t222
15.3 分布式ID生成系統(tǒng)\t222
15.3.1 全局唯一,趨勢遞增\t223
15.3.2 全局唯一,單調(diào)遞增\t225
15.3.3 全局唯一,連續(xù)遞增\t229
第16章 C端業(yè)務系統(tǒng)案例實戰(zhàn)\t230
16.1 電商庫存系統(tǒng)\t230
16.1.1 業(yè)務背景與需求分析\t230
16.1.2 高并發(fā)讀與寫:中央緩存與本地緩存的權衡\t234
16.1.3 數(shù)據(jù)一致性:冪等問題\t238
16.1.4 數(shù)據(jù)一致性:扣減多個商品的原子性問題\t239
16.1.5 數(shù)據(jù)一致性:并發(fā)更新的鎖問題\t239
16.1.6 數(shù)據(jù)一致性:流水和庫存表如何對賬\t240
16.1.7 業(yè)務架構進階之一:一個庫存模型同時支持自營與平臺
兩個商業(yè)模式\t241
16.1.8 業(yè)務架構進階之二:分區(qū)售賣問題\t243
16.1.9 業(yè)務架構進階之三:供應鏈庫存(不光要管售賣,還要管采購)\t244
16.1.10 業(yè)務架構進階之四:以“單據(jù)”為中心的庫存對賬\t245
16.1.11 業(yè)務架構進階之五:先采后賣,還是先賣后采\t247
16.2 秒殺系統(tǒng)\t249
16.2.1 需求分析\t249
16.2.2 異步秒殺與同步秒殺\t250
16.2.3 同步秒殺系統(tǒng)的設計\t252
16.2.4 防刷問題\t253
16.2.5 名額歸還問題\t254
16.2.6 同步與異步的相結合\t254
16.2.7 層層限流,保護最終的核心系統(tǒng)\t255
16.3 Feeds流\t255
16.3.1 需求分析\t255
16.3.2 無限長列表的實現(xiàn)\t256
16.3.3 寫擴散和讀擴散的相結合\t258
16.3.4 評論的實現(xiàn)\t259
第17章 B端業(yè)務系統(tǒng)案例實戰(zhàn)\t261
17.1 規(guī)則引擎平臺\t261
17.1.1 規(guī)則引擎的典型應用場景\t261
17.1.2 四種技術選型\t263
17.1.3 規(guī)則的存儲與版本管理\t265
17.1.4 可視化規(guī)則編輯\t266
17.1.5 特征庫、動作庫管理\t268
17.1.6 特征數(shù)據(jù)庫\t269
17.1.7 總結\t270
17.2 工作流引擎平臺\t271
17.2.1 沒有工作流引擎,如何做業(yè)務開發(fā)\t271
17.2.2 工作流引擎的基本思路\t273
17.2.3 工作流引擎與微服務編排引擎、分布式事務的Saga模式的區(qū)別與
聯(lián)系\t274
17.2.4 BPMN標準\t278
17.2.5 工作流引擎的技術選型與Activiti介紹\t281
17.2.6 對Activiti的裁剪\t283
17.2.7 Activiti的性能問題與對Activiti的擴展\t284
17.2.8 工作流引擎與微服務/DDD方法論的沖突\t285
17.3 權限管理系統(tǒng)\t286
17.3.1 權限管理系統(tǒng)的由來\t286
17.3.2 權限如何抽象:權限Code\t287
17.3.3 權限的進一步抽象\t288
17.3.4 權限模型\t289
17.3.5 權限系統(tǒng)的實現(xiàn)方式\t289
17.3.6 API權限與微服務鑒權\t292
第18章 大數(shù)據(jù)與中臺案例實戰(zhàn)\t295
18.1 嚴格區(qū)分在線業(yè)務邏輯與離線業(yè)務邏輯\t295
18.2 警惕后臺離線任務\t298
18.3 合理利用大數(shù)據(jù)交互式查詢引擎\t300
18.4 中臺\t301
18.4.1 什么不是中臺\t301
18.4.2 業(yè)務中臺\t303
18.4.3 數(shù)據(jù)中臺\t304
18.4.4 中臺和組織架構\t307

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號