從Paxos到Zookeeper:分佈式一致性原理與實踐

從Paxos到Zookeeper:分佈式一致性原理與實踐

作者: 倪超
出版社: 電子工業
出版在: 2021-01-01
ISBN-13: 9787121249679
ISBN-10: 7121249677
裝訂格式: 平裝
總頁數: 422 頁





內容描述


<內容簡介>
倪超編著的《從Paxos到Zookeeper(分佈式一致性原理與實踐)》從分佈式一致性的理論出發,向讀者簡要介紹幾種典型的分佈式一致性協議,以及解決分佈式一致性問題的思路,其中重點講解了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.3 分佈式環境的各種問題
  1.2 從ACID到CAP∕BASE
    1.2.1 ACID
    1.2.2 分佈式事務
    1.2.3 CAP和BASE理論
  小結
第2章  一致性協議
  2.1 2PC與3PC
    2.1.1 2PC
    2.1.2 3PC
  2.2 Paxos演算法
    2.2.1 追本溯源
    2.2.2 Paxos理論的誕生
    2.2.3 Paxos演算法詳解
  小結
第3章  Paxos的工程實踐
  3.1 Chubby
    3.1.1 概述
    3.1.2 應用場景
    3.1.3 設計目標
    3.1.4 Chubby技術架構
    3.1.5 Paxos協議實現
  3.2 Hypertable
    3.2.1 概述
    3.2.2 演算法實現
  小結
第4章  ZooKeeper與Paxos
  4.1 初識ZooKeeper
    4.1.1 ZooKeeper介紹
    4.1.2 ZooKeeper從何而來
    4.1.3 ZooKeeper的基本概念
    4.1.4 為什麼選擇ZooKeeper
  4.2 ZooKeeper的ZAB協議
    4.2.1 ZAB協議
    4.2.2 協議介紹
    4.2.3 深入ZAB協議
    4.2.4 ZAB與Paxos演算法的聯繫與區別
  小結
第5章  使用ZooKeeper
  5.1 部署與運行
    5.1.1 系統環境
    5.1.2 集群與單機
    5.1.3 運行服務
  5.2 客戶端腳本
    5.2.1 創建
    5.2.2 讀取
    5.2.3 更新
    5.2.4 刪除
  5.3 Java客戶端API使用
    5.3.1 創建會話
    5.3.2 創建節點
    5.3.3 刪除節點
    5.3.4 讀取數據
    5.3.5 更新數據
    5.3.6 檢測節點是否存在
    5.3.7 權限控制
  5.4 開源客戶端
    5.4.1 ZkClient
    5.4.2 Curator
  小結
第6章  ZooKeeper的典型應用場景
  6.1 典型應用場景及實現註
    6.1.1 數據發布∕訂閱
    6.1.2 負載均衡
    6.1.3 命名服務
    6.1.4 分佈式協調∕通知
    6.1.5 集群管理
    6.1.6 Master選舉
    6.1.7 分佈式鎖
    6.1.8 分佈式隊列
  小結
  6.2 ZooKeeper在大型分佈式系統中的應用
    6.2.1 Hadoop
    6.2.2 HBase
    6.2.3 Kafka 
  6.3 ZooKeeper在阿裡巴巴的實踐與應用
    6.3.1 案例一消息中間件:Metamorphosis
    6.3.2 案例二 RPC服務框架:Dubbo
    6.3.3 案例三基於MySQL Binlog的增量訂閱和消費組件:Canal
    6.3.4 案例四分佈式數據庫同步系統:Otter
    6.3.5 案例五輕量級分佈式通用搜索平臺:終搜
    6.3.6 案例六實時計算引擎:JStorm
  小結
第7章  ZooKeeper技術內幕
  7.1 系統模型
    7.1.1 數據模型
    7.1.2 節點特性
    7.1.3 版本——保證分佈式數據原子性操作
    7.1.4 Watcher——數據變更的通知
    7.1.5 ACL——保障數據的安全
  7.2 序列化與協議
    7.2.1 Jute介紹
    7.2.2 使用Jute進行序列化
    7.2.3 深入Jute
    7.2.4 通信協議
  7.3 客戶端
    7.3.1 一次會話的創建過程
    7.3.2 服務器地址列表
    7.3.3 ClientCnxn:網絡I∕O
  7.4 會話
    7.4.1 會話狀態
    7.4.2 會話創建
    7.4.3 會話管理
    7.4.4 會話清理
    7.4.5 重連
  7.5 服務器啟動
    7.5.1 單機版服務器啟動
    7.5.2 集群版服務器啟動
  7.6 Leader選舉
    7.6.1 Leader選舉概述
    7.6.2 Leader選舉的演算法分析
    7.6.3 Leader選舉的實現細節
  7.7 各服務器角色介紹
    7.7.1 Leader
    7.7.2 Follower
    7.7.3 Observer
    7.7.4 集群間消息通信
  7.8 請求處理
    7.8.1 會話創建請求
    7.8.2 SetData請求
    7.8.3 事務請求轉發
    7.8.4 GetData請求
  7.9 數據與存儲
    7.9.1 內存數據
    7.9.2 事務日誌
    7.9.3 snapshot——數據快照
    7.9.4 初始化
    7.9.5 數據同步
  小結
第8章  ZooKeeper運維
  8.1 配置詳解
    8.1.1 基本配置
    8.1.2 高級配置
  8.2 四字命令
  8.3 JMX
    8.3.1 開啟遠程JMX
    8.3.2 通過JConsole連接ZooKeeper
  8.4 監控
    8.4.1 實時監控
    8.4.2 數據統計
  8.5 構建一個高可用的集群
    8.5.1 集群組成
    8.5.2 容災
    8.5.3 擴容與縮容
  8.6 日常運維
    8.6.1 數據與日誌管理
    8.6.2 Too many connections
    8.6.3 磁盤管理
  小結
附錄A  Windows平臺上部署ZooKeeper
附錄B  從源代碼開始構建
附錄C  各發行版本重大更新記錄
附錄D  ZooKeeper源代碼閱讀指引  

<作者介紹>
倪超
倪超,阿裡巴巴集團高級研發工程師,國家認證系統分析師,畢業於杭州電子科技大學電腦系。2010年加入阿裡巴巴中間件團隊擔任研發實習崗位,一直從事ZooKeeper的開發與運維工作,從中學習與總結了不少分佈式一致性相關的理論與實踐經驗,尤其對ZooKeeper及其相關技術有非常深入的研究。目前在中間件團隊專家組任職產品經理,負責分佈式產品的產品化和雲計算化改造工作。     新浪微博:@ni掌櫃


目錄大綱


目錄 第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




相關書籍

Begin to Code with JavaScript

作者 Miles Rob

2021-01-01

Bootstrap 4 Web 設計與開發實戰

作者 楊旺功

2021-01-01

Programming HTML5 Applications: Building Powerful Cross-Platform Environments in Javascript (Paperback)

作者 Zachary Kessin

2021-01-01