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