




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、ZooKeeper分布式應用的協調器主要內容 ZooKeeper的數據模型 ZooKeeper的數據讀寫機制 ZooKeeper的使用方法為什么需要ZooKeeper? 大部分分布式應用需要一個主控、協調器或控制器來管理物理分布的子進程(如資源、任務分配等) 目前,大部分應用需要開發私有的協調程序,缺乏一個通用的機制 協調程序的反復編寫浪費,且難以形成通用、伸縮性好的協調器 ZooKeeper:提供通用的分布式鎖服務,用以協調分布式應用(如,為HBase提供服務)ZooKeeper的數據模型 層次化目錄結構 命名符合常規文件系統規范, 不能包含/ 節點Znode可以包含數據與子 節點 客戶端應
2、用可在節點上設置 監視器 節點數據不支持部分讀寫, 而是一次性完整讀寫 Ephemeral節點節點創建屬性 Ephemeral 創建的節點不是持久節點 一旦與客戶端的會話結束,節點自動刪除 Sequence 創建節點時,編號自動加1 例如x-1,x-2,s-3,x-4等ZooKeeper的讀寫機制 ZooKeeper是一個由多個Server組成的集群 一個Leader,多個Follower 每個Server都保存了一份數據副本 全局數據一致 分布式讀寫 更新請求轉發,由Leader實施使用ZooKeeper的約定 更新請求順序執行 來自同一個Client的更新請求按其發送順序依次執行 數據更新
3、原子性 一次數據更新要么成功,要么失敗。不存在部分數據寫入成功或失敗的情況 全局唯一數據視圖 Client無論連接哪個Server,數據視圖都是一致的 實時性 在一定時間范圍內,Client能讀到最新數據ZooKeeper的APIString create(path, data, acl, flags)void delete(path, expectedVersion)Stat setData(path, data, expectedVersion)(data, Stat) getData(path, watch)Stat exists(path, watch)String getChildr
4、en(path, watch)void sync(path)Stat setACL(path, acl, expectedVersion)(acl, Stat) getACL(path)包含監視器調用參數均包含節點路徑對比:Chubby的APIhandle Open(path,) Close(handle,) GetContentsAndStat(handle,), GetStat(handle), ReadDir(handle,) SetContents(handle), SetACL(handle,) Delete(path) Acquire(), TryAcquire(), Releas
5、e() GetSequencer(), SetSequencer(), CheckSequencer()?僅Open包含節點路徑,生成handle供其他API使用如何使用ZooKeeper? 關于ZooKeeper的鎖服務 這里的“鎖”并非對ZooKeeper的資源加鎖,用于對第三方資源加鎖 用例 多個第三方分布式Server需要使用某第三方資源,誰獲取了ZooKeeper中的獨占鎖,誰就可以使用第三方資源,否則等待如何使用ZooKeeper? Leader選舉 用于在多個節點中選取主控,如GFS中對外服務Master節點的選取1)getData(“/servers/leader”,?true
6、)2)如果讀取成功則從數據中獲取leader信息,退出3)讀取失敗,執行create(“./servers/leader”,?hostname,?EPHEMERAL)(注意節點類型)如果創建成功則自己成為leader,寫入信息,退出5)如果寫入失敗,則返回步驟1getData設置了監視器,如果數據發生變化,會重啟上述流程如何使用ZooKeeper? 獨占鎖 如果分布式應用需要對某資源獨占使用,可以申請獨占鎖1)id?=?create(“./locks/x-”,?SEQUENCE|EPHEMERAL)2)getChildren(“./locks/”,?false)3)如果id是第一個節點,則獲取
7、獨占鎖,退出4)exists(name?of?last?child?before?id,?true)(注意,設置了監視器)5)如果id之前不存在節點,返回步驟26)等待通知7)返回步驟2有且僅有一個Client可以獲取到獨占鎖如何使用ZooKeeper? 共享鎖1)id?=?create(“./locks/s-”,?SEQUENCE|EPHEMERAL)2)getChildren(“./locks/”,?false)3)如果id之前沒有x-類型的節點,獲取共享鎖,退出4)exists(name?of?the?last?x-?before?id,?true)5)如果id之前不存在x-類型節點,返回步驟26)等待事件通知7)返回步驟2如果之前沒有獨占鎖,就可以獲取共享鎖如何使用ZooKeeper? 其他應用(小數據存儲) 例如,GFS中master如何獲知ChunkServer信息?基于ZooKeeper的實現方法ChunkServer執行如下操作:1)id?=?create(“./chunkservers/cs-”,?SEQUENCE|EPHEMERAL)2)向節點id中寫入ChunkServer元信息Master執行如下操作:1)?getChildren(“./chunkservers/”,?true)2)讀取子節點數據,獲知ChunkServer元信息其他 ZooKe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲品牌股東合作協議書模板
- 暗股投資合作協議書醫療健康
- 鮑魚養殖場土地租賃及養殖廢棄物資源化利用合同
- 文學鑒賞結課論文
- 馬工程版教育學原理題庫
- 關于教育內卷的議論文800字
- 以心理健康為題的論文
- 本科教育學專業論文題目
- 對心理健康工作的建議
- 2026屆新高考歷史熱點精準復習辛亥革命
- 禾川x3系列伺服說明書
- 細胞生物學(全套1047張課件)
- 架空乘人裝置專項設計(一采區運輸下山)
- 六年級下冊“快樂讀書吧”練習題試題及答案
- 手術部位感染目標性監測分析情況報告
- ★教導型組織-行動管理模式(三)
- 城市二次供水改造項目可行性研究報告
- 朗文英語2B英語復習資料
- 固定資產報廢情況說明
- 珠算三級四級試題
- 酒水采購合同15505
評論
0/150
提交評論