內容簡介
本書分三部分,共10章。第一部分(第1~2章)闡述ApacheZooKeeper這類係統的設計目的和動機,並介紹分布式係統的一些必要背景知識。第1章介紹ZooKeeper可以做什麼,以及其設計如何支撐這些任務。第2章介紹基本概念和基本組成模塊,並通過命令行工具的具體操作介紹瞭ZooKeeper可以做什麼。第二部分(第3~8章)闡述開發人員所需要掌握的ZooKeeper庫調用方法和編程技巧。第3章介紹Java語言的API.第4章解釋如何跟蹤和處理ZooKeeper中的狀態變更情況。第5章介紹如何在係統或網絡故障時恢復應用。第6章介紹需要注意來避免故障的一些繁雜卻很重要的場景。第7章介紹C語言版的API接口,也可以作為非Java語言實現的ZooKeeperAPI的基礎,對非Java語言的開發人員非常有幫助。第8章介紹一款更高層級的封裝的ZooKeeper接口。第三部分(第9~10章)主要介紹ZooKeeper內部原理及如何運行ZooKeeper.第9章介紹ZooKeeper的作者們在設計時所采用的方案。第10章介紹如何對ZooKeeper進行配置。
作者簡介
Flavio Junqueira,是微軟研究院在英國劍橋大學的研究人員之一。他擁有美國加州大學聖地亞哥分校計算機科學博士學位。他的研究範圍涉及分布式係統的各個方麵,包括分布式算法、並發性和可擴展性。他是Apache項目如Apache ZooKeeper(PMC主席和提交者)和Apache BookKeeper(提交者)的積極貢獻者。他一有空就喜歡睡覺。
Benjamin Reed,是一位負責Facebook中所有細節工作的軟件工程師。他以前的職位包括雅虎研究院首席研究科學傢(負責所有大的方嚮)和IBM Almaden Research的研究人員(負責所有事情,無論大小)。他擁有加州大學聖剋魯斯分校計算機科學博士學位。他從事的工作涉及分布式計算、大數據處理、分布式存儲、係統管理和嵌入式框架等領域。他參加瞭各種開源項目,如Hadoop和Linux操作係統等。他幫助啓動瞭由Apache軟件基金會主辦的項目如Pig、ZooKeeper和BookKeeper。
目錄
前言 1
第一部分 ZooKeeper的概念和基礎
第1章 簡介 7
1.1 ZooKeeper的使命 8
1.1.1 ZooKeeper改變瞭什麼 10
1.1.2 ZooKeeper不適用的場景 10
1.1.3 關於Apache項目 11
1.1.4 通過ZooKeeper構建分布式係統 11
1.2 示例:主-從應用 12
1.2.1 主節點失效 13
1.2.2 從節點失效 14
1.2.3 通信故障 14
1.2.4 任務總結 15
1.3 分布式協作的難點 16
1.4 ZooKeeper的成功和注意事項 18
第2章 瞭解ZooKeeper 19
2.1 ZooKeeper基礎 19
2.1.1 API概述 20
2.1.2 znode的不同類型 21
2.1.3 監視與通知 22
2.1.4 版本 24
2.2 ZooKeeper架構 25
2.2.1 ZooKeeper仲裁 26
2.2.2 會話 27
2.3 開始使用ZooKeeper 28
2.3.1 第一個ZooKeeper會話 28
2.3.2 會話的狀態和聲明周期 31
2.3.3 ZooKeeper與仲裁模式 33
2.3.4 實現一個原語:通過ZooKeeper實現鎖 36
2.4 一個主-從模式例子的實現 37
2.4.1 主節點角色 37
2.4.2 從節點、任務和分配 40
2.4.3 從節點角色 40
2.4.4 客戶端角色 41
2.5 小結 43
第二部分 使用ZooKeeper進行開發
第3章 開始使用ZooKeeper的API 47
3.1 設置ZooKeeper的CLASSPATH 47
3.2 建立ZooKeeper會話 47
3.2.1 實現一個Watcher 49
3.2.2 運行Watcher的示例 51
3.3 獲取管理權 53
3.3.1 異步獲取管理權 57
3.3.2 設置元數據 60
3.4 注冊從節點 62
3.5 任務隊列化 65
3.6 管理客戶端 66
3.7 小結 68
第4章 處理狀態變化 70
4.1 單次觸發器 71
4.2 如何設置監視點 72
4.3 普遍模型 73
4.4 主-從模式的例子 74
4.4.1 管理權變化 74
4.4.2 主節點等待從節點列錶的變化 77
4.4.3 主節點等待新任務進行分配 80
4.4.4 從節點等待分配新任務 83
4.4.5 客戶端等待任務的執行結果 86
4.5 另一種調用方式:Multiop 88
4.6 通過監視點代替顯式緩存管理 90
4.7 順序的保障 91
4.7.1 寫操作的順序 91
4.7.2 讀操作的順序 91
4.7.3 通知的順序 92
4.8 監視點的羊群效應和可擴展性 93
4.9 小結 94
第5章 故障處理 96
5.1 可恢復的故障 98
5.2 不可恢復的故障 102
5.3 群首選舉和外部資源 103
5.4 小結 106
第6章 ZooKeeper注意事項 107
6.1 使用ACL 107
6.1.1 內置的鑒權模式 108
6.1.2 SASL和Kerberos 111
6.1.3 增加新鑒權模式 111
6.2 恢復會話 111
6.3 當znode節點重新創建時,重置版本號 112
6.4 sync方法 112
6.5 順序性保障 114
6.5.1連接丟失時的順序性 114
6.5.2 同步API和多綫程的順序性 115
6.5.3 同步和異步混閤調用的順序性 115
6.6 數據字段和子節點的限製 116
6.7 嵌入式ZooKeeper服務器 116
6.8 小結 117
第7章 C語言客戶端 118
7.1 配置開發環境 118
7.2 開始會話 119
7.3 引導主節點 121
7.4 行使管理權 126
7.5 任務分配 129
7.6 單綫程與多綫程客戶端 132
7.7 小結 135
第8章 Curator:ZooKeeper API的高級封裝庫 136
8.1 Curator客戶端程序 136
8.2 流暢式API 137
8.3 監聽器 138
8.4 Curator中狀態的轉換 140
8.5 兩種邊界情況 141
8.6 菜譜 141
8.6.1 群首閂 142
8.6.2 群首選舉器 143
8.6.3 子節點緩存器 146
8.7 小結 148
第三部分 ZooKeeper的管理
第9章 ZooKeeper內部原理 151
9.1 請求、事務和標識符 152
9.2 群首選舉 153
9.3 Zab:狀態更新的廣播協議 157
9.4 觀察者 161
9.5 服務器的構成 162
9.5.1 獨立服務器 163
9.5.2 群首服務器 164
9.5.3 追隨者和觀察者服務器 165
9.6 本地存儲 166
9.6.1 日誌和磁盤的使用 166
9.6.2 快照 167
9.7 服務器與會話 169
9.8 服務器與監視點 170
9.9 客戶端 170
9.10 序列化 171
9.11 小結 171
第10章 運行ZooKeeper 173
10.1 配置ZooKeeper服務器 174
10.1.1 基本配置 175
10.1.2 存儲配置 175
10.1.3 網絡配置 177
10.1.4 集群配置 179
10.1.5 認證和授權選項 181
10.1.6 非安全配置 182
10.1.7 日誌 183
10.1.8 專用資源 185
10.2 配置ZooKeeper集群 185
10.2.1 多數原則 186
10.2.2 法定人數的可配置性 186
10.2.3 觀察者 188
10.3 重配置 188
10.4 配額管理 194
10.5 多租賃配置 196
10.6 文件係統布局和格式 197
10.6.1 事務日誌 198
10.6.2 快照 199
10.6.3 時間戳文件 200
10.6.4 已保存的ZooKeeper數據的應用 200
10.7 四字母命令 201
10.8 通過JMX進行監控 202
10.9 工具 209
10.10 小結 209
前言/序言
構建分布式係統並不容易。然而,人們日常所使用的應用大多基於分布式係統,在短時間內依賴於分布式係統的現狀並不會改變。Apache ZooKeeper旨在減輕構建健壯的分布式係統的任務。ZooKeeper基於分布式計算的核心概念而設計,主要目的是給開發人員提供一套容易理解和開發的接口,從而簡化分布式係統構建的任務。
即使有瞭ZooKeeper,但開發中分布式處理的環節並不是微不足道的事情,因此我們編寫瞭這本書,通過這本書可以讓你快速熟悉如何通過Apache ZooKeeper構建分布式係統。我們從基本的概念入手,這樣可以使你覺得自己就像是分布式係統的專傢一樣,在你看到一係列需要注意的警告時,你可能會有一些沮喪,不過不用擔心,如果你能夠很好地理解我們所闡述的關鍵點,你已經走在構建良好的分布式係統的正確道路上瞭。
目標讀者本書適用於分布式係統的開發人員,以及使用ZooKeeper進行生産經營的應用程序運維人員。我們假設讀者具備Java語言的知識,並且本書為讀者提供瞭關於分布式係統中概念的大量背景知識,以便你更好地使用ZooKeeper。
本書內容介紹第一部分闡述瞭Apache ZooKeeper這類係統的設計目的和動機,並介紹分布式係統的一些必要背景知識。
第1章介紹瞭ZooKeeper可以做什麼,以及其設計如何支撐這些任務。
第2章介紹瞭基本概念和基本組成模塊,並通過命令行工具的具體操作介紹ZooKeeper可以做什麼。
第二部分闡述程序員所需要掌握的ZooKeeper庫調用方法和編程技巧,雖然對係統運維人員來說也有一定價值,但也可以不選擇閱讀。這一部分主要以Java語言的API為主,因為Java是非常流行的開發語言,如果你之前使用其他開發語言,可以通過這一部分內容來學習基本的技術和方法調用,之後通過其他語言來實現。另外,我們也為C語言的應用開發人員提供瞭一章內容的開發方法。
第3章介紹Java語言的API。
第4章解釋如何跟蹤和處理ZooKeeper中的狀態變更情況。
第5章介紹如何在係統或網絡故障時恢復應用。
第6章介紹為瞭避免故障要注意的一些繁雜卻很重要的場景。
第7章介紹C語言版的API,該章也可以作為非Java語言實現的ZooKeeper API的基礎,對非Java語言的開發人員非常有幫助。
第8章介紹一款更高層級的封裝的ZooKeeper接口。
第三部分主要適用於ZooKeeper的係統運維人員,尤其在第9章章中即便對開發人員也很有價值。
第9章介紹ZooKeeper的作者們在設計時所采用的方案,這些知識對運維管理非常有幫助。
第10章介紹如何對ZooKeeper進行配置。
本書約定本書中采用瞭以下排版約定:
斜體用於重點介紹新的術語、URL、命令、工具組件以及文件和目錄名稱。
等寬字體(Constant width)指示變量、方法、類型、參數、對象以及其他代碼結構。
等寬加粗(Constant width bold)指示需要用戶輸入的命令或其他文本信息,同時也用於命令輸齣中的重要信息。
等寬斜體(Constant width italic)指示代碼或命令中的占位符,這些占位符需要在實際中替換為閤適的值。
注意:錶示一些小竅門、建議或普通注解。
示例代碼代碼、練習等附加資料可以到O扲eilly官方網站本書頁麵下載。
本書用於協助讀者構建係統。一般而言,如果本書提供瞭示例代碼,你可以在自己的程序或文檔中使用,並不需要聯係我們獲得授權,除非你復製瞭大量代碼。例如,你在開發程序時使用瞭本書中的好幾處代碼則不需要授權,若以CD-ROM方式齣售並發布O扲eilly書籍中的示例則需要得到授權許可,引用本書及其示例代碼來解答問題並不需要授權許可,將本書中大量示例代碼引入你自己的著作中則需要授權許可。
……
ZooKeeper:分布式過程協同技術詳解 下載 mobi epub pdf txt 電子書 格式
評分
☆☆☆☆☆
說實話。翻譯不怎麼樣。我覺得翻譯不是做開發齣生的。很多翻譯很生硬
評分
☆☆☆☆☆
協同服務技術必須買呢
評分
☆☆☆☆☆
內容還不錯,還沒仔細看
評分
☆☆☆☆☆
書外麵包瞭一層薄膜,書剛到就迫不及待的打開看瞭下前言和目錄,感覺應該是非常好的一本書。應該會對自己有所幫助。
評分
☆☆☆☆☆
目錄比較混亂
評分
☆☆☆☆☆
屋企咯大具有我理解作用
評分
☆☆☆☆☆
買書是病,得治療,不過也是好書纔會選。
評分
☆☆☆☆☆
抱歉評晚,還以為節前收不到瞭呢,店傢給力,快遞給力,遺憾的是書角破損瞭,有點小失望.
評分
☆☆☆☆☆
不像權威指南那麼全麵,但常用的東西都講到瞭,能解決工作中所遇到的問題,還是挺不錯的,沒什麼廢話!