內(nèi)容簡介
本書從全棧角度講解了分布式系統(tǒng)涉及的各項主要技術,從原理剖析、應用場景和實踐案例3個維度展開,是作者多年分布式系統(tǒng)研發(fā)和架構經(jīng)驗的總結。
從前端到后端、從高效交互到負載均衡、從網(wǎng)絡傳輸?shù)絎eb服務器、從高并發(fā)到高可用……本書囊括了分布式系統(tǒng)的整個技術體系,內(nèi)容詳實、結構清晰,能幫助讀者理解和掌握分布式系統(tǒng)架構設計的難點和調(diào)優(yōu)方案。
全書一共10章,具體內(nèi)容如下:
第1章介紹了分布式架構的理念、目標、作用,以及架構和設計中的難點;
第2章講解了分布式架構中前端和后端的交互方式、交互難點、高效交互調(diào)優(yōu);
第3章講解了分布式環(huán)境下網(wǎng)絡傳輸?shù)倪^程、難點、性能調(diào)優(yōu);
第4章講解了Nginx的負載均衡、頁面緩存、限流、高可用、性能調(diào)優(yōu);
第5章講解了Varnish的HTTP加速、數(shù)據(jù)緩存、緩存策略、高可用、性能調(diào)優(yōu);
第6章講解了Tomcat的原理、加載機制、安全管理、高可用集群、性能優(yōu)化;
第7章講解了分布式環(huán)境中高并發(fā)的問題,通過多種技術方案,如緩存、消息隊列、分布式鎖等方式去優(yōu)化和處理,提高系統(tǒng)整體的吞吐量;
第8章介紹了普通事務與分布式事務的差異性,以及分布式事務的多種處理方式;
第9章講解了如何通過高效索引優(yōu)化、高可用的技術方案讓MySQL能夠提供更高效的數(shù)據(jù)庫服務;
第10章講解了分布式環(huán)境中的高可用,即如何通過容量預估、全鏈路壓測、容災設計來提高系統(tǒng)整體的可用性和健壯性。
前 言
第1章 分布式架構介紹 1
1.1 分布式架構發(fā)展過程 2
1.2 分布式架構設計理念和目標 6
1.2.1 設計理念 6
1.2.2 設計目標 7
1.3 分布式架構應用場景 10
1.4 分布式架構設計難點 10
1.4.1 網(wǎng)絡因素 10
1.4.2 服務可用性 11
1.4.3 數(shù)據(jù)一致性 12
1.5 分布式架構解決痛點 13
1.6 本章小結 14
第2章 分布式架構前后端交互 15
2.1 前后端交互發(fā)展過程 15
2.1.1 傳統(tǒng)交互模式 16
2.1.2 前后端分離交互模式 19
2.1.3 整體交互 22
2.2 前后端交互方式 22
2.2.1 工作流程 22
2.2.2 交互常見狀態(tài)碼 29
2.3 前后端交互難點 30
2.4 前后端交互優(yōu)化 32
2.5 案例講解 37
2.6 本章小結 40
第3章 分布式架構網(wǎng)絡傳輸 41
3.1 網(wǎng)絡傳輸協(xié)議 41
3.2 網(wǎng)絡傳輸調(diào)用過程 46
3.2.1 協(xié)議概述 46
3.2.2 傳輸過程 48
3.3 網(wǎng)絡傳輸優(yōu)化 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優(yōu)化 79
4.8.1 優(yōu)化思路 79
4.8.2 核心配置優(yōu)化 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緩存狀態(tài) 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優(yōu)化 109
5.8.1 Varnish優(yōu)化思路 109
5.8.2 Varnish優(yōu)化講解 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 配置調(diào)整 135
6.6.2 安全策略 136
6.6.3 SSL傳輸安全 136
6.7 Tomcat集群 137
6.7.1 集群組件實現(xiàn) 138
6.7.2 集群配置 139
6.8 JVM 142
6.8.1 Class文件結構 143
6.8.2 類的裝載、連接和初始化 145
6.8.3 JVM的內(nèi)存分配 148
6.8.4 JVM執(zhí)行引擎 151
6.8.5 垃圾回收 152
6.9 Tomcat性能調(diào)優(yōu) 158
6.9.1 性能測試 158
6.9.2 性能優(yōu)化 162
6.10 本章小結 167
第7章 分布式架構高并發(fā) 168
7.1 高并發(fā)使用場景 169
7.2 高并發(fā)難點 171
7.2.1 高并發(fā)期間如何避免產(chǎn)生臟數(shù)據(jù) 171
7.2.2 當出現(xiàn)臟數(shù)據(jù)后如何處理 171
7.2.3 高并發(fā)期間如何節(jié)約帶寬 172
7.3 高并發(fā)之緩存 174
7.3.1 Redis介紹 174
7.3.2 Redis原理 175
7.3.3 Redis安裝編譯 176
7.3.4 Redis數(shù)據(jù)結構 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高并發(fā)處理常見問題及解決方案 201
7.3.10 Redis高可用 211
7.3.11 Redis調(diào)優(yōu) 213
7.4 高并發(fā)之消息隊列 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高并發(fā)處理常見問題及解決方案 238
7.4.9 RocketMQ集群 240
7.4.10 RocketMQ調(diào)優(yōu) 240
7.5 高并發(fā)優(yōu)化 242
7.5.1 優(yōu)化思路 242
7.5.2 優(yōu)化方案 243
7.6 高并發(fā)經(jīng)典案例 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 網(wǎng)絡因素 259
8.4.2 消息重復發(fā)送 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 數(shù)據(jù)結構 318
9.6.3 索引分類 319
9.6.4 創(chuàng)建索引 319
9.7 MySQL備份 321
9.7.1 備份概述 321
9.7.2 備份類型 321
9.7.3 備份內(nèi)容 322
9.8 MySQL難點 323
9.8.1 死鎖 323
9.8.2 連接數(shù)過多 325
9.8.3 主從復制延遲 325
9.8.4 CPU飆高 326
9.8.5 索引效率 326
9.9 MySQL性能優(yōu)化 326
9.9.1 優(yōu)化思路 326
9.9.2 優(yōu)化過程 327
9.10 MySQL集群 331
9.11 本章小結 333
第10章 分布式架構高可用 334
10.1 高可用概述及難點 334
10.2 高可用涉及內(nèi)容 336
10.3 高可用具體應用 344
10.4 高可用案例講解 345
10.5 本章小結 346