《從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

相關文章
相關標籤/搜索