《從Paxos到Zookeeper:分散式一致性原理與實踐》是2015年電子工業出版社出版的圖書,作者是倪超。
基本介紹
- 書名:從Paxos到Zookeeper:分散式一致性原理與實踐
- 作者:倪超
- ISBN:9787121249679
- 頁數:420
- 定價:75元
- 出版社:電子工業出版社
- 出版時間:2015-02
- 開本:16(178*233)
內容簡介,目錄,
內容簡介
本書從分散式一致性的理論出發,向讀者簡要介紹幾種典型的分散式一致性協定,以及解決分散式一致性問題的思路,其中重點講解了Paxos和ZAB協定。同時,本書深入介紹了分散式一致性問題的工業解決方案——ZooKeeper,並著重向讀者展示這一分散式協調框架的使用方法、內部實現及運維技巧,旨在幫助讀者全面了解ZooKeeper,並更好地使用和運維ZooKeeper。全書共8章,分為五部分:第一部分(第1章)主要介紹了計算機系統從集中式向分散式系統演變過程中面臨的挑戰,並簡要介紹了ACID、CAP和BASE等經典分散式理論;第二部分(第2~4章)介紹了2PC、3PC和Paxos三種分散式一致性協定,並著重講解了ZooKeeper中使用的一致性協定——ZAB協定;第三部分(第5~6章)介紹了ZooKeeper的使用方法,包括客戶端API的使用以及對ZooKeeper服務的部署與運行,並結合真實的分散式套用場景,總結了ZooKeeper使用的最佳實踐;第四部分(第7章)對ZooKeeper的架構設計和實現原理進行了深入分析,包含系統模型、Leader選舉、客戶端與服務端的工作原理、請求處理,以及伺服器角色的工作流程和數據存儲等;第五部分(第8章)介紹了ZooKeeper的運維實踐,包括配置詳解和監控管理等,重點講解了如何構建一個高可用的ZooKeeper服務。
目錄
第1章 分散式架構 1
1.1 從集中式到分散式 1
1.1.1 集中式的特點 2
1.1.2 分散式的特點 2
1.1.3 分散式環境的各種問題 4
1.2 從ACID到CAP/BASE 5
1.2.1 ACID 5
1.2.2 分散式事務 8
1.2.3 CAP和BASE理論 9
小結 15
第2章 一致性協定 17
2.1 2PC與3PC 17
2.1.1 2PC 17
2.1.2 3PC 21
2.2 Paxos算法 24
2.2.1 追本溯源 25
2.2.2 Paxos理論的誕生 26
2.2.3 Paxos算法詳解 27
小結 37
第3章 Paxos的工程實踐 39
3.1 Chubby 39
3.1.1 概述 39
3.1.2 套用場景 40
3.1.3 設計目標 40
3.1.4 Chubby技術架構 43
3.1.5 Paxos協定實現 52
3.2 Hypertable 55
3.2.1 概述 55
3.2.2 算法實現 57
小結 58
第4章 ZooKeeper與Paxos 59
4.1 初識ZooKeeper 59
4.1.1 ZooKeeper介紹 59
4.1.2 ZooKeeper從何而來 62
4.1.3 ZooKeeper的基本概念 62
4.1.4 為什麼選擇ZooKeeper 64
4.2 ZooKeeper的ZAB協定 65
4.2.1 ZAB協定 65
4.2.2 協定介紹 66
4.2.3 深入ZAB協定 71
4.2.4 ZAB與Paxos算法的聯繫與區別 77
小結 78
第5章 使用ZooKeeper 79
5.1 部署與運行 79
5.1.1 系統環境 79
5.1.2 集群與單機 80
5.1.3 運行服務 84
5.2 客戶端腳本 88
5.2.1 創建 88
5.2.2 讀取 89
5.2.3 更新 90
5.2.4 刪除 91
5.3 Java客戶端API使用 91
5.3.1 創建會話 91
5.3.2 創建節點 95
5.3.3 刪除節點 99
5.3.4 讀取數據 100
5.3.5 更新數據 109
5.3.6 檢測節點是否存在 113
5.3.7 許可權控制 115
5.4 開源客戶端 120
5.4.1 ZkClient 120
5.4.2 Curator 130
小結 162
第6章 ZooKeeper的典型套用場景 163
6.1 典型套用場景及實現注 163
6.1.1 數據發布/訂閱 164
6.1.2 負載均衡 166
6.1.3 命名服務 170
6.1.4 分散式協調/通知 173
6.1.5 集群管理 179
6.1.6 Master選舉 185
6.1.7 分散式鎖 188
6.1.8 分散式佇列 194
小結 197
6.2 ZooKeeper在大型分散式系統中的套用 197
6.2.1 Hadoop 198
6.2.2 HBase 203
6.2.3 Kafka 207
6.3 ZooKeeper在阿里巴巴的實踐與套用 213
6.3.1 案例一 訊息中間件:Metamorphosis 213
6.3.2 案例二 RPC服務框架:Dubbo 217
6.3.3 案例三 基於MySQL Binlog的增量訂閱和消費組件:Canal 219
6.3.4 案例四 分散式資料庫同步系統:Otter 223
6.3.5 案例五 輕量級分散式通用搜尋平台:終搜 226
6.3.6 案例六 實時計算引擎:JStorm 238
小結 242
第7章 ZooKeeper技術內幕 243
7.1 系統模型 243
7.1.1 數據模型 243
7.1.2 節點特性 244
7.1.3 版本——保證分散式數據原子性操作 246
7.1.4 Watcher——數據變更的通知 249
7.1.5 ACL——保障數據的安全 265
7.2 序列化與協定 272
7.2.1 Jute介紹 272
7.2.2 使用Jute進行序列化 273
7.2.3 深入Jute 275
7.2.4 通信協定 277
7.3 客戶端 284
7.3.1 一次會話的創建過程 286
7.3.2 伺服器地址列表 289
7.3.3 ClientCnxn:網路I/O 295
7.4 會話 298
7.4.1 會話狀態 298
7.4.2 會話創建 299
7.4.3 會話管理 304
7.4.4 會話清理 307
7.4.5 重連 309
7.5 伺服器啟動 311
7.5.1 單機版伺服器啟動 312
7.5.2 集群版伺服器啟動 315
7.6 Leader選舉 321
7.6.1 Leader選舉概述 321
7.6.2 Leader選舉的算法分析 323
7.6.3 Leader選舉的實現細節 328
7.7 各伺服器角色演員介紹 335
7.7.1 Leader 335
7.7.2 Follower 338
7.7.3 Observer 339
7.7.4 集群間訊息通信 339
7.8 請求處理 342
7.8.1 會話創建請求 343
7.8.2 SetData請求 351
7.8.3 事務請求轉發 354
7.8.4 GetData請求 355
7.9 數據與存儲 356
7.9.1 記憶體數據 356
7.9.2 事務日誌 358
7.9.3 snapshot——數據快照 364
7.9.4 初始化 368
7.9.5 數據同步 372
小結 376
第8章 ZooKeeper運維 379
8.1 配置詳解 379
8.1.1 基本配置 379
8.1.2 高級配置 380
8.2 四字命令 384
8.3 JMX 390
8.3.1 開啟遠程JMX 390
8.3.2 通過JConsole連線ZooKeeper 391
8.4 監控 397
8.4.1 實時監控 397
8.4.2 數據統計 398
8.5 構建一個高可用的集群 398
8.5.1 集群組成 398
8.5.2 容災 399
8.5.3 擴容與縮容 402
8.6 日常運維 402
8.6.1 數據與日誌管理 402
8.6.2 Too many connections 404
8.6.3 磁碟管理 405
小結 405
附錄A Windows平台上部署ZooKeeper 406
附錄B 從原始碼開始構建 409
附錄C 各發行版本重大更新記錄 414
附錄D ZooKeeper原始碼閱讀指引 418