《從Paxos到ZooKeeper:分佈式一致性理論與實踐》上市了

從出版社聯繫到如今出版,將近一年半時間,現在終於上市了,希望對有需要的同行朋友有幫助。讀者朋友有任何關於本書的問題或建議,都可以通過以下途徑來進行反饋:

論壇:http://dwz.cn/AGFzp (QQ或新浪微博賬號均可登錄)

通過微信:84518994

聯繫到我。



    書名:《從Paxos到ZooKeeper》

    副標題:分佈式一致性原理與實踐

    出版社:電子工業出版社 博文視點

    作者: 倪超 

    出版年: 2015-2-1

    詳細介紹:http://dwz.cn/AGFzp

    

    天貓:http://dwz.cn/AosIk

    京東商城:http://dwz.cn/AnHjz

    互動出版網:http://dwz.cn/AGHcL

    噹噹網:http://dwz.cn/AGHeF

    亞馬遜商店:http://dwz.cn/AGHhp

wKioL1TFm5WTfKiXAAFsib_SArI206.jpg

   



內容簡介

《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服務。


致謝

  首先要感謝現在的部門老大蔣江偉先生。第一次接觸蔣江偉是在2011年,當時我還是一個實習生,參加了他的一個講座“淘寶前臺系統優化實踐——吞吐量優化”,對其中關於“編寫GC友好代碼”的內容有不解之處,於是私下請教。他耐心的講解令我至今記憶猶新。兩年前,他全面負責中間件團隊之後,給予了我更大的幫助和鼓勵,使我得到了極大的進步,真的非常感謝。本書的問世,離不開他的推薦。也正是這一份寫作的責任感,讓我有決心和毅力來對整個ZooKeeper內容進行了一次全面的整理。在這裏,衷心祝福蔣江偉先生帶領中間件團隊走向新的高度。

  其次,本書的寫作,離不開各位小夥伴們的支持和幫助,他們是各領域的資深專家,我向他們徵集了很多有營養的內容。在這裏,按照章節順序,依次表示感謝:許澤彬參與了“問題提出”的寫作;侯前明對Paxos算法的前世今生進行的整理;段培樂對晦澀的Paxos協議進行了細緻的講解;姜宇向我提供了他對於分佈式事務的見解;徐偉辰參與了分佈式鎖服務Chubby相關的寫作;葉成旭提供了他在上家公司時對Hypertable的學習和研究成果;高偉細緻地向我展示了Curator這一ZooKeeper客戶端的使用;陳杰提供了他在“自動化的DNS服務”場景中的經驗總結;曹龍參與了Hadoop相關內容的寫作;鄧明鑑則貢獻了他對HBase的深刻見解;作爲產品的開源負責人,莊曉丹和王強提供了對消息中間件Metamorphosis技術架構的講解;李鼎則向我全面展示了RPC服務框架Dubbo的技術細節;樓江航向我提供了Canal和Otter這兩個分佈式產品中的ZooKeeper應用場景;李雨前、柳明和溫朝凱則一起寫了終搜在產品演進過程中對ZooKeeper的使用和改進;封仲淹參與了對其自主產品JStorm的技術剖析……是你們一遍又一遍地對內容進行修改,才使得本書內容更爲豐滿。

  另外,也要感謝溫文鎏、王林、許澤彬、高偉和段培樂等人對全書的審閱,正是你們提出的寶貴建議,對完善本書提供了非常大的幫助。

  感謝現在的同事陸學慧先生,從2013年下半年開始,他全面接手對ZooKeeper的開發和運維,在他身上感受到的專業和創新精神讓我備受鼓舞。

  另外,感謝我的第一個主管馬震先生,是他的幫助爲我指引了方向,讓我有機會進入ZooKeeper的世界,並負責這個產品在公司的發展。儘管由於業務調整,馬震先生已經轉崗到其他部門,但依然由衷祝福他工作順利。

  還要感謝我的同事,阿里巴巴店鋪平臺的侯前明先生。本來該書作者應該是我們兩個人,但是由於期間他的家庭又增加了一個小生命,導致其不得不中途退出。從本書的選題到寫作大綱的制定,他都傾注了不少心血,相信如果有他一起創作,本書內容會更加豐滿、深刻。這裏表達遺憾的同時,也向這位兩個孩子的父親送去祝福,祝願他生活美滿。

  感謝本書的責任編輯劉芸女士,是她反覆審稿和編排,才能讓本書的內容趨於完美。

  感謝本書的封面設計吳海燕女士,她的努力已經無需言表,在技術書上的這一前衛、極富視覺衝擊力的封面設計,深深震撼到了我,也希望讀者朋友們能夠喜歡。

  尤其感謝本書的策劃編輯張春雨先生。作爲一個南方人,我很少有機會和那些有着一口北方腔的朋友交談,第一次接到張春雨先生電話的時候,我才真正領略了北京腔,也正是他的邀請,才能讓我有機會進行本書的撰寫,同時在前後將近1年半的漫長寫作過程中,也是他的幫助和鼓勵,才讓我堅持完成並不斷完善本書的內容。在這裏,也衷心祝願張春雨先生事業更上一層樓。

  最後,還有我的父母,在過去的1年時間裏,多次放假沒有回家,儘管父母一直鼓勵我專注工作,專注於自己的事業,但我深知他們內心對兒子的牽掛,在這裏也深深地向他們道一聲:“謝謝”,也謹以此書獻給我最親愛的爸爸媽媽。

      倪超                         

  2014年12月於杭州淘寶城



書籍目錄

第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

附錄AWindows平臺上部署ZooKeeper 406

附錄B從源代碼開始構建 409

附錄C各發行版本重大更新記錄 414

附錄DZooKeeper源代碼閱讀指引 418


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章