《分散式系統架構:技術棧詳解與快速進階》是2020年機械工業出版社出版的圖書。本書從全棧角度講解了分散式系統涉及的各項主要技術,從原理剖析、套用場景和實踐案例3個維度展開,是作者多年分散式系統研發和架構經驗的總結。
基本介紹
- 書名:分散式系統架構:技術棧詳解與快速進階
- 作者:張程
- 出版社:機械工業出版社
- ISBN:9787111655909
內容簡介,圖書目錄,作者簡介,
內容簡介
本書從全棧角度講解了分散式系統涉及的各項主要技術,從原理剖析、套用場景和實踐案例3個維度展開,是作者多年分散式系統研發和架構經驗的總結。從前端到後端、從高效互動到負載均衡、從網路傳輸到Web伺服器、從高並發到高可用……本書囊括了分散式系統的整個技術體系,內容詳實、結構清晰,能幫助讀者理解和掌握分散式系統架構設計的難點和調優方案。全書一共10章,具體內容如下:第1章介紹了分散式架構的理念、目標、作用,以及架構和設計中的難點;第2章講解了分散式架構中前端和後端的互動方式、互動難點、高效互動調優;第3章講解了分散式環境下網路傳輸的過程、難點、性能調優;第4章講解了Nginx的負載均衡、頁面快取、限流、高可用、性能調優;第5章講解了Varnish的HTTP加速、數據快取、快取策略、高可用、性能調優;第6章講解了Tomcat的原理、載入機制、安全管理、高可用集群、性能最佳化;第7章講解了分散式環境中高並發的問題,通過多種技術方案,如快取、訊息佇列、分散式鎖等方式去最佳化和處理,提高系統整體的吞吐量;第8章介紹了普通事務與分散式事務的差異性,以及分散式事務的多種處理方式;第9章講解了如何通過高效索引最佳化、高可用的技術方案讓MySQL能夠提供更高效的資料庫服務;第10章講解了分散式環境中的高可用,即如何通過容量預估、全鏈路壓測、容災設計來提高系統整體的可用性和健壯性。
圖書目錄
第1章 分散式架構介紹 1
1.1 分散式架構發展過程 2
1.2 分散式架構設計理念和目標 6
1.2.1 設計理念 6
1.2.2 設計目標 7
1.3 分散式架構套用場景 10
1.4 分散式架構設計難點 10
1.4.1 網路因素 10
1.4.2 服務可用性 11
1.4.3 數據一致性 12
1.5 分散式架構解決痛點 13
1.6 本章小結 14
第2章 分散式架構前後端互動 15
2.1 前後端互動發展過程 15
2.1.1 傳統互動模式 16
2.1.2 前後端分離互動模式 19
2.1.3 整體互動 22
2.2 前後端互動方式 22
2.2.1 工作流程 22
2.2.2 互動常見狀態碼 29
2.3 前後端互動難點 30
2.4 前後端互動最佳化 32
2.5 案例講解 37
2.6 本章小結 40
第3章 分散式架構網路傳輸 41
3.1 網路傳輸協定 41
3.2 網路傳輸調用過程 46
3.2.1 協定概述 46
3.2.2 傳輸過程 48
3.3 網路傳輸最佳化 52
3.4 本章小結 54
第4章 分散式架構Nginx 55
4.1 Nginx工作原理 55
4.2 Nginx源碼編譯安裝 57
4.3 Nginx配置 62
4.4 Nginx代理&負載均衡 64
4.4.1 正向代理 66
4.4.2 反向代理 66
4.4.3 動靜分離 68
4.4.4 負載均衡策略 69
4.5 Nginx快取 74
4.6 Nginx限流 76
4.7 Nginx禁止 79
4.8 Nginx最佳化 79
4.8.1 最佳化思路 79
4.8.2 核心配置最佳化 79
4.9 Nginx高可用 82
4.10 本章小結 86
第5章 分散式架構Varnish 87
5.1 Varnish工作原理 87
5.2 Varnish源碼編譯安裝 89
5.3 Varnish配置 92
5.4 Varnish核心指令 98
5.4.1 Varnish核心指令之backend 98
5.4.2 Varnish核心指令之director 98
5.5 Varnish快取 102
5.5.1 Varnish快取狀態 102
5.5.2 Varnish快取管理 104
5.6 Varnish處理策略 105
5.6.1 pass 106
5.6.2 pipe 106
5.6.3 lookup 107
5.7 Varnish健康檢查 107
5.8 Varnish最佳化 109
5.8.1 Varnish最佳化思路 109
5.8.2 Varnish最佳化講解 109
5.9 Varnish高可用 111
5.10 本章小結 116
第6章 分散式架構Tomcat 117
6.1 Tomcat原理 117
6.2 Tomcat生命周期 123
6.3 Tomcat源碼編譯安裝 124
6.4 Tomcat目錄結構 126
6.4.1 bin目錄 126
6.4.2 conf目錄 127
6.4.3 lib目錄 128
6.4.4 logs目錄 129
6.4.5 webapps目錄 129
6.5 Tomcat載入過程 130
6.5.1 Bootstrap類初始化 130
6.5.2 Bootstrap啟動 132
6.6 Tomcat安全 135
6.6.1 配置調整 135
6.6.2 安全策略 136
6.6.3 SSL傳輸安全 136
6.7 Tomcat集群 137
6.7.1 集群組件實現 138
6.7.2 集群配置 139
6.8 JVM 142
6.8.1 Class檔案結構 143
6.8.2 類的裝載、連線和初始化 145
6.8.3 JVM的記憶體分配 148
6.8.4 JVM執行引擎 151
6.8.5 垃圾回收 152
6.9 Tomcat性能調優 158
6.9.1 性能測試 158
6.9.2 性能最佳化 162
6.10 本章小結 167
第7章 分散式架構高並發 168
7.1 高並發使用場景 169
7.2 高並發難點 171
7.2.1 高並發期間如何避免產生髒數據 171
7.2.2 當出現髒數據後如何處理 171
7.2.3 高並發期間如何節約頻寬 172
7.3 高並發之快取 174
7.3.1 Redis介紹 174
7.3.2 Redis原理 175
7.3.3 Redis安裝編譯 176
7.3.4 Redis數據結構 178
7.3.5 Redis持久化 181
7.3.6 Redis事務 183
7.3.7 Redis分散式鎖 186
7.3.8 Redis任務佇列 189
7.3.9 Redis高並發處理常見問題及解決方案 201
7.3.10 Redis高可用 211
7.3.11 Redis調優 213
7.4 高並發之訊息佇列 214
7.4.1 RocketMQ介紹 214
7.4.2 RocketMQ安裝編譯 217
7.4.3 RocketMQ套用場景 221
7.4.4 RocketMQ路由中心 222
7.4.5 RocketMQ訊息存儲結構 224
7.4.6 RocketMQ刷盤和複製策略 226
7.4.7 RocketMQ訊息佇列 227
7.4.8 RocketMQ高並發處理常見問題及解決方案 238
7.4.9 RocketMQ集群 240
7.4.10 RocketMQ調優 240
7.5 高並發最佳化 242
7.5.1 最佳化思路 242
7.5.2 最佳化方案 243
7.6 高並發經典案例 245
7.7 本章小結 249
第8章 分散式架構事務 250
8.1 分散式事務介紹 251
8.1.1 本地事務 251
8.1.2 全局事務 253
8.1.3 兩階段提交 254
8.1.4 分散式事務 255
8.1.5 小結 255
8.2 分散式事務概論 256
8.2.1 CAP定理 256
8.2.2 BASE理論 257
8.3 分散式事務套用場景 258
8.4 分散式事務難點 259
8.4.1 網路因素 259
8.4.2 訊息重複傳送 260
8.4.3 CAP定理選擇 262
8.5 分散式事務解決方案 262
8.5.1 努力通知 263
8.5.2 TCC事務補償 273
8.5.3 訊息一致性 284
8.6 分散式事務案例講解 295
8.7 本章小結 297
第9章 分散式架構MySQL 298
9.1 MySQL運行原理 299
9.2 MySQL編譯啟動 304
9.3 MySQL事務 307
9.3.1 事務特性 307
9.3.2 隔離級別 308
9.3.3 死鎖 308
9.3.4 事務日誌 309
9.4 MySQL存儲引擎 310
9.4.1 概述 310
9.4.2 InnoDB 311
9.4.3 MyISAM 313
9.5 MySQL之SQL操作 314
9.5.1 SQL介紹 314
9.5.2 庫 316
9.5.3 表 316
9.6 MySQL索引 317
9.6.1 索引概述 317
9.6.2 數據結構 318
9.6.3 索引分類 319
9.6.4 創建索引 319
9.7 MySQL備份 321
9.7.1 備份概述 321
9.7.2 備份類型 321
9.7.3 備份內容 322
9.8 MySQL難點 323
9.8.1 死鎖 323
9.8.2 連線數過多 325
9.8.3 主從複製延遲 325
9.8.4 CPU飆高 326
9.8.5 索引效率 326
9.9 MySQL性能最佳化 326
9.9.1 最佳化思路 326
9.9.2 最佳化過程 327
9.10 MySQL集群 331
9.11 本章小結 333
第10章 分散式架構高可用 334
10.1 高可用概述及難點 334
10.2 高可用涉及內容 336
10.3 高可用具體套用 344
10.4 高可用案例講解 345
10.5 本章小結 346
作者簡介
張程:研發工程師和架構師,在分散式系統架構領域有豐富的實戰經驗,擅長高並發、高可用系統的架構,以及分散式系統的性能調優。曾就職于格瓦拉電影和優速科技,任職期間參與過多個大型銀行系統、大型購票系統、物流訂單系統的架構設計和研發工作。曾經還參與過分散式Job調度系統的設計和架構工作。熱衷於技術探索和研發,在CSDN分享了大量關於架構和研發的文章,獲得一致好評。