分布式應(yīng)用系統(tǒng)架構(gòu)設(shè)計(jì)與實(shí)踐
定 價(jià):79.9 元
- 作者:謝文輝
- 出版時(shí)間:2022/2/1
- ISBN:9787115572301
- 出 版 社:人民郵電出版社
- 中圖法分類:TP316.4
- 頁碼:216
- 紙張:
- 版次:01
- 開本:16開
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,分布式應(yīng)用系統(tǒng)對具備高性能、高可用性、可擴(kuò)展性和可維護(hù)性的架構(gòu)的依賴度越來越高。本書以理論與實(shí)踐相結(jié)合的方式,對分布式應(yīng)用系統(tǒng)的架構(gòu)設(shè)計(jì)進(jìn)行系統(tǒng)、全面的闡述。本書分為3個(gè)部分,第一部分是分布式系統(tǒng)架構(gòu)概述,介紹一些分布式系統(tǒng)架構(gòu)下常見的基礎(chǔ)概念和架構(gòu)設(shè)計(jì)的目標(biāo);第二部分是核心理論及技術(shù),介紹分布式應(yīng)用系統(tǒng)下常見的技術(shù)中間件機(jī)制和使用場景,著重介紹分布式應(yīng)用系統(tǒng)在高性能、高可用性、可擴(kuò)展性和可維護(hù)性等方面常見的優(yōu)化技術(shù);第三部分是架構(gòu)實(shí)踐案例,梳理幾種常見的大型分布式應(yīng)用系統(tǒng)的架構(gòu),并結(jié)合具體問題進(jìn)行分析,使讀者能夠真正理解設(shè)計(jì)分布式應(yīng)用系統(tǒng)架構(gòu)所面臨的問題及解決問題的思路。
本書主要面向初/中/高級程序員和架構(gòu)師,但書中的部分內(nèi)容也適合產(chǎn)品經(jīng)理、項(xiàng)目經(jīng)理閱讀。此外,本書內(nèi)容由淺入深且案例豐富,也適合作為培訓(xùn)教材。
1.分布式系統(tǒng)是為了解決資源(如計(jì)算、存儲(chǔ)等)緊缺的問題而出現(xiàn)的,它包含分布式應(yīng)用系統(tǒng)和分布式中間件系統(tǒng);
2.本書從基礎(chǔ)的架構(gòu)概念入手,由淺入深地講解分布式應(yīng)用系統(tǒng)的核心理論,形成了完整的方法論。
3.本書結(jié)合賬號(hào)系統(tǒng)、秒殺系統(tǒng)、消息推送系統(tǒng)和區(qū)塊鏈系統(tǒng)這4種常見的大型分布式應(yīng)用系統(tǒng),詳細(xì)講解了架構(gòu)的實(shí)現(xiàn)細(xì)節(jié)。
4.閱讀本書,讀者可以掌握分布式應(yīng)用系統(tǒng)的理論體系,并具備業(yè)務(wù)實(shí)戰(zhàn)能力。
謝文輝,阿里巴巴高級技術(shù)專家,曾在華為、魅族、深信服擔(dān)任架構(gòu)師及技術(shù)經(jīng)理,具有10年以上的系統(tǒng)開發(fā)及架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)。他目前在阿里巴巴東南亞電商平臺(tái)Lazada負(fù)責(zé)業(yè)務(wù)風(fēng)控架構(gòu)相關(guān)工作。他主導(dǎo)過多個(gè)雙活機(jī)房的設(shè)計(jì)和構(gòu)建工作,也主導(dǎo)過多個(gè)日均活躍用戶數(shù)達(dá)千萬級的應(yīng)用系統(tǒng)的架構(gòu)設(shè)計(jì)、改造及優(yōu)化工作,對分布式應(yīng)用系統(tǒng)的高性能、高可用性和高并發(fā)處理有較為豐富的經(jīng)驗(yàn)。他的個(gè)人興趣在于大數(shù)據(jù)存儲(chǔ)處理、大規(guī)模系統(tǒng)的高性能、高可用性及多機(jī)房架構(gòu)的設(shè)計(jì)和構(gòu)建。
第 一部分 分布式系統(tǒng)架構(gòu)概述
第 1章 架構(gòu)的基礎(chǔ)概念 3
1.1 架構(gòu)的幾個(gè)概念 3
1.1.1 系統(tǒng)與子系統(tǒng) 4
1.1.2 模塊與組件 4
1.1.3 組件與框架 4
1.2 架構(gòu)設(shè)計(jì)的目標(biāo) 5
1.2.1 高性能 5
1.2.2 高可用性 6
1.2.3 可擴(kuò)展性 7
1.2.4 可維護(hù)性 8
1.3 小結(jié) 9
第 2章 架構(gòu)的演進(jìn) 10
2.1 單體架構(gòu) 10
2.2 分層架構(gòu) 11
2.3 面向服務(wù)架構(gòu) 12
2.4 微服務(wù)架構(gòu)體系 14
2.4.1 微服務(wù)架構(gòu) 14
2.4.2 服務(wù)網(wǎng)格架構(gòu) 16
2.4.3 單元化架構(gòu) 17
2.5 小結(jié) 18
第二部分 核心理論及技術(shù)
第3章 常見的基礎(chǔ)組件 21
3.1 數(shù)據(jù)緩存 21
3.1.1 Redis高可用實(shí)現(xiàn)方案 22
3.1.2 Redis集群實(shí)現(xiàn)方案 24
3.1.3 Redis跨機(jī)房數(shù)據(jù)同步方案 29
3.2 數(shù)據(jù)分發(fā) 34
3.2.1 Kafka的分區(qū)機(jī)制及副本機(jī)制 34
3.2.2 Kafka高吞吐量實(shí)現(xiàn)方案 40
3.2.3 Kafka跨機(jī)房雙活方案 44
3.3 數(shù)據(jù)存儲(chǔ) 47
3.3.1 關(guān)系數(shù)據(jù)庫MySQL 48
3.3.2 列式存儲(chǔ)數(shù)據(jù)庫HBase 49
3.3.3 文檔型存儲(chǔ)數(shù)據(jù)庫MongoDB 51
3.3.4 圖數(shù)據(jù)庫Neo4j 54
3.3.5 內(nèi)容搜索數(shù)據(jù)庫Elasticsearch 57
3.4 服務(wù)遠(yuǎn)程調(diào)用 59
3.4.1 RPC架構(gòu)及原理 59
3.4.2 Dubbo架構(gòu)及原理 60
3.4.3 gRPC架構(gòu)及原理 62
3.5 小結(jié) 63
第4章 高性能架構(gòu) 64
4.1 基礎(chǔ)概念 64
4.1.1 性能指標(biāo) 64
4.1.2 利特爾法則 65
4.1.3 系統(tǒng)優(yōu)化分析 65
4.1.4 系統(tǒng)指標(biāo)選擇 66
4.2 客戶端及網(wǎng)絡(luò)接入 66
4.2.1 瀏覽器訪問優(yōu)化 66
4.2.2 CDN緩存 68
4.2.3 反向代理 69
4.3 數(shù)據(jù)存儲(chǔ) 71
4.3.1 數(shù)據(jù)庫讀寫分離 71
4.3.2 數(shù)據(jù)庫分庫/分表 82
4.3.3 數(shù)據(jù)庫如何實(shí)現(xiàn)平滑擴(kuò)容 86
4.3.4 NoSQL綜合解決方案 90
4.4 數(shù)據(jù)緩存 95
4.4.1 適合做緩存的場景 95
4.4.2 緩存穿透及解決方案 95
4.4.3 緩存雪崩及解決方案 97
4.4.4 緩存擊穿及解決方案 97
4.4.5 如何保障緩存與數(shù)據(jù)庫數(shù)據(jù)的一致性 100
4.5 業(yè)務(wù)邏輯 103
4.5.1 異步處理 103
4.5.2 消息隊(duì)列 106
4.6 架構(gòu)模式與負(fù)載均衡 106
4.6.1 多進(jìn)程并發(fā)模式與多線程并發(fā)模式 107
4.6.2 阻塞與非阻塞I/O模式 107
4.6.3 負(fù)載均衡架構(gòu) 109
4.7 小結(jié) 110
第5章 高可用架構(gòu) 111
5.1 分布式系統(tǒng)的幾個(gè)理論 111
5.1.1 CAP理論 111
5.1.2 BASE理論 114
5.2 數(shù)據(jù)存儲(chǔ)層 116
5.2.1 雙機(jī)架構(gòu) 116
5.2.2 數(shù)據(jù)多副本 118
5.3 業(yè)務(wù)邏輯層 122
5.3.1 有狀態(tài)和無狀態(tài) 122
5.3.2 服務(wù)治理 124
5.3.3 服務(wù)降級 125
5.3.4 服務(wù)限流 130
5.4 多機(jī)房架構(gòu) 133
5.4.1 多機(jī)房的幾種架構(gòu) 133
5.4.2 多機(jī)房多活架構(gòu) 138
5.4.3 多機(jī)房流量分發(fā) 141
5.5 小結(jié) 143
第6章 可擴(kuò)展架構(gòu) 144
6.1 可擴(kuò)展的幾個(gè)維度 145
6.1.1 橫向擴(kuò)展 145
6.1.2 垂直擴(kuò)展 146
6.1.3 縱深擴(kuò)展 147
6.2 可擴(kuò)展架構(gòu)的實(shí)現(xiàn) 148
6.2.1 反向代理層 148
6.2.2 接入層 149
6.2.3 業(yè)務(wù)邏輯層 150
6.2.4 數(shù)據(jù)緩存層 152
6.2.5 數(shù)據(jù)存儲(chǔ)層 152
6.3 幾種典型可擴(kuò)展架構(gòu) 153
6.3.1 分層架構(gòu) 153
6.3.2 服務(wù)化架構(gòu) 153
6.3.3 單元化架構(gòu) 154
6.4 小結(jié) 155
第7章 可維護(hù)架構(gòu) 156
7.1 系統(tǒng)監(jiān)控工具 156
7.1.1 Zabbix監(jiān)控系統(tǒng)介紹 156
7.1.2 Prometheus介紹 158
7.1.3 中間件監(jiān)控系統(tǒng)介紹 159
7.2 業(yè)務(wù)日志的監(jiān)控及分析 162
7.2.1 日志采集及清洗 163
7.2.2 日志的傳輸及存儲(chǔ) 165
7.2.3 日志查詢及可視化 166
7.3 業(yè)務(wù)數(shù)據(jù)的安全監(jiān)控及分析 167
7.3.1 數(shù)據(jù)安全防護(hù)方案 167
7.3.2 數(shù)據(jù)授權(quán)及審計(jì)系統(tǒng) 168
7.3.3 數(shù)據(jù)血緣追蹤 169
7.4 小結(jié) 170
第三部分 架構(gòu)實(shí)踐案例
第8章 賬號(hào)系統(tǒng) 173
8.1 系統(tǒng)整體架構(gòu) 173
8.1.1 注冊服務(wù) 173
8.1.2 認(rèn)證服務(wù) 175
8.1.3 授權(quán)服務(wù) 176
8.2 關(guān)鍵問題及解決方案 177
8.2.1 如何解決會(huì)話粘連問題 177
8.2.2 如何實(shí)現(xiàn)數(shù)據(jù)一致性 181
8.2.3 如何實(shí)現(xiàn)安全降級 183
8.3 小結(jié) 184
第9章 秒殺系統(tǒng) 185
9.1 系統(tǒng)整體架構(gòu) 185
9.1.1 接入網(wǎng)關(guān) 186
9.1.2 訂單及庫存服務(wù) 187
9.1.3 支付服務(wù) 189
9.2 關(guān)鍵問題及解決方案 190
9.2.1 如何優(yōu)化流量金字塔模型 190
9.2.2 如何解決并發(fā)場景下的庫存扣減一致性問題 191
9.2.3 如何提升熱點(diǎn)賬戶的沖扣性能 193
9.3 小結(jié) 197
第 10章 消息推送系統(tǒng) 198
10.1 系統(tǒng)整體架構(gòu) 198
10.1.1 業(yè)務(wù)接入層 199
10.1.2 通道層 200
10.1.3 客戶端層 200
10.2 關(guān)鍵問題及解決方案 200
10.2.1 如何實(shí)現(xiàn)過載保護(hù) 201
10.2.2 如何提升消息分發(fā)性能 202
10.2.3 如何解決海量消息推送明細(xì)的存儲(chǔ)問題 203
10.2.4 如何降低推送的客戶端功耗 203
10.2.5 如何解決消息重復(fù)推送問題 204
10.2.6 如何解決海量長連接問題 205
10.2.7 如何解決客戶端消息偽造問題 206
10.3 小結(jié) 206
第 11章 區(qū)塊鏈系統(tǒng) 207
11.1 系統(tǒng)整體架構(gòu)及優(yōu)化 207
11.1.1 接入層 208
11.1.2 池化層及指令處理層 210
11.1.3 網(wǎng)絡(luò)層 213
11.1.4 存儲(chǔ)層 215
11.2 小結(jié) 216