




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、ZooKeeper分布式應(yīng)用的協(xié)調(diào)器,主要內(nèi)容,ZooKeeper的數(shù)據(jù)模型 ZooKeeper的數(shù)據(jù)讀寫(xiě)機(jī)制 ZooKeeper的使用方法,為什么需要ZooKeeper,大部分分布式應(yīng)用需要一個(gè)主控、協(xié)調(diào)器或控制器來(lái)管理物理分布的子進(jìn)程(如資源、任務(wù)分配等) 目前,大部分應(yīng)用需要開(kāi)發(fā)私有的協(xié)調(diào)程序,缺乏一個(gè)通用的機(jī)制 協(xié)調(diào)程序的反復(fù)編寫(xiě)浪費(fèi),且難以形成通用、伸縮性好的協(xié)調(diào)器 ZooKeeper:提供通用的分布式鎖服務(wù),用以協(xié)調(diào)分布式應(yīng)用(如,為HBase提供服務(wù),ZooKeeper的數(shù)據(jù)模型,層次化目錄結(jié)構(gòu) 命名符合常規(guī)文件系統(tǒng)規(guī)范, 不能包含/ 節(jié)點(diǎn)Znode可以包含數(shù)據(jù)與子 節(jié)點(diǎn) 客戶端
2、應(yīng)用可在節(jié)點(diǎn)上設(shè)置 監(jiān)視器 節(jié)點(diǎn)數(shù)據(jù)不支持部分讀寫(xiě), 而是一次性完整讀寫(xiě) Ephemeral節(jié)點(diǎn),節(jié)點(diǎn)創(chuàng)建屬性,Ephemeral 創(chuàng)建的節(jié)點(diǎn)不是持久節(jié)點(diǎn) 一旦與客戶端的會(huì)話結(jié)束,節(jié)點(diǎn)自動(dòng)刪除 Sequence 創(chuàng)建節(jié)點(diǎn)時(shí),編號(hào)自動(dòng)加1 例如x-1,x-2,s-3,x-4等,ZooKeeper的讀寫(xiě)機(jī)制,ZooKeeper是一個(gè)由多個(gè)Server組成的集群 一個(gè)Leader,多個(gè)Follower 每個(gè)Server都保存了一份數(shù)據(jù)副本 全局?jǐn)?shù)據(jù)一致 分布式讀寫(xiě) 更新請(qǐng)求轉(zhuǎn)發(fā),由Leader實(shí)施,使用ZooKeeper的約定,更新請(qǐng)求順序執(zhí)行 來(lái)自同一個(gè)Client的更新請(qǐng)求按其發(fā)送順序依次執(zhí)行
3、數(shù)據(jù)更新原子性 一次數(shù)據(jù)更新要么成功,要么失敗。不存在部分?jǐn)?shù)據(jù)寫(xiě)入成功或失敗的情況 全局唯一數(shù)據(jù)視圖 Client無(wú)論連接哪個(gè)Server,數(shù)據(jù)視圖都是一致的 實(shí)時(shí)性 在一定時(shí)間范圍內(nèi),Client能讀到最新數(shù)據(jù),ZooKeeper的API,String create(path, data, acl, flags) void delete(path, expectedVersion) Stat setData(path, data, expectedVersion) (data, Stat) getData(path, watch) Stat exists(path, watch) Strin
4、g getChildren(path, watch) void sync(path) Stat setACL(path, acl, expectedVersion) (acl, Stat) getACL(path,包含監(jiān)視器,調(diào)用參數(shù)均包含節(jié)點(diǎn)路徑,對(duì)比:Chubby的API,handle Open(path,) Close(handle,) GetContentsAndStat(handle,), GetStat(handle), ReadDir(handle,) SetContents(handle), SetACL(handle,) Delete(path) Acquire(), Try
5、Acquire(), Release() GetSequencer(), SetSequencer(), CheckSequencer(,僅Open包含節(jié)點(diǎn)路徑,生成handle供其他API使用,如何使用ZooKeeper,關(guān)于ZooKeeper的鎖服務(wù) 這里的“鎖”并非對(duì)ZooKeeper的資源加鎖,用于對(duì)第三方資源加鎖 用例 多個(gè)第三方分布式Server需要使用某第三方資源,誰(shuí)獲取了ZooKeeper中的獨(dú)占鎖,誰(shuí)就可以使用第三方資源,否則等待,如何使用ZooKeeper,Leader選舉 用于在多個(gè)節(jié)點(diǎn)中選取主控,如GFS中對(duì)外服務(wù)Master節(jié)點(diǎn)的選取,1)getData(“/serv
6、ers/leader”, true) 2)如果讀取成功則從數(shù)據(jù)中獲取leader信息,退出 3)讀取失敗,執(zhí)行create(“./servers/leader”, hostname, EPHEMERAL)(注意節(jié)點(diǎn)類型) 如果創(chuàng)建成功則自己成為leader,寫(xiě)入信息,退出 5)如果寫(xiě)入失敗,則返回步驟1,getData設(shè)置了監(jiān)視器,如果數(shù)據(jù)發(fā)生變化, 會(huì)重啟上述流程,如何使用ZooKeeper,獨(dú)占鎖 如果分布式應(yīng)用需要對(duì)某資源獨(dú)占使用,可以申請(qǐng)獨(dú)占鎖,1)id = create(“./locks/x-”, SEQUENCE|EPHEMERAL) 2)getChildren(“./locks/
7、”, false) 3)如果id是第一個(gè)節(jié)點(diǎn),則獲取獨(dú)占鎖,退出 4)exists(name of last child before id, true)(注意,設(shè)置了監(jiān)視器) 5)如果id之前不存在節(jié)點(diǎn),返回步驟2 6)等待通知 7)返回步驟2,有且僅有一個(gè)Client可以獲取到獨(dú)占鎖,如何使用ZooKeeper,共享鎖,1)id = create(“./locks/s-”, SEQUENCE|EPHEMERAL) 2)getChildren(“./locks/”, false) 3)如果id之前沒(méi)有x-類型的節(jié)點(diǎn),獲取共享鎖,退出 4)exists(name of the last x-
8、before id, true) 5)如果id之前不存在x-類型節(jié)點(diǎn),返回步驟2 6)等待事件通知 7)返回步驟2,如果之前沒(méi)有獨(dú)占鎖,就可以獲取共享鎖,如何使用ZooKeeper,其他應(yīng)用(小數(shù)據(jù)存儲(chǔ)) 例如,GFS中master如何獲知ChunkServer信息,基于ZooKeeper的實(shí)現(xiàn)方法 ChunkServer執(zhí)行如下操作: 1)id = create(“./chunkservers/cs-”, SEQUENCE|EPHEMERAL) 2)向節(jié)點(diǎn)id中寫(xiě)入ChunkServer元信息 Master執(zhí)行如下操作: 1) getChildren(“./chunkservers/”, true) 2)讀取子節(jié)點(diǎn)數(shù)據(jù),獲知ChunkServer元信息,其他,ZooKe
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)織錦工藝品行業(yè)競(jìng)爭(zhēng)格局及未來(lái)投資趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)睡衣產(chǎn)業(yè)需求現(xiàn)狀及發(fā)展趨勢(shì)分析報(bào)告
- 幾百幾十?dāng)?shù)乘以一位數(shù)質(zhì)量作業(yè)口算題帶答案
- 水電站運(yùn)行承包合同
- 物流配送車(chē)輛購(gòu)買(mǎi)和租賃合同
- 彩鋼房購(gòu)銷(xiāo)合同
- 電子政務(wù)項(xiàng)目數(shù)據(jù)共享與合作協(xié)議
- 旅游景點(diǎn)租賃合同
- 度棉花購(gòu)銷(xiāo)合同樣本
- 長(zhǎng)期保潔服務(wù)提供協(xié)議書(shū)(30篇)
- 新修訂《中小學(xué)教師職業(yè)道德規(guī)范》解讀
- 品質(zhì)月工作總結(jié)
- 江西省南昌市2024屆高三一模語(yǔ)文試題及答案解析
- 第一章村集體經(jīng)濟(jì)組織會(huì)計(jì)制度講解
- 2024年濟(jì)南護(hù)理職業(yè)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- -藝術(shù)博覽會(huì)與藝術(shù)品拍賣(mài)
- 2024年貴州水投水務(wù)集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- (完整版)ERP流程及操作手冊(cè)
- 接上童氣:小學(xué)《道德與法治》統(tǒng)編教材研究
- 武器講解課件
- 關(guān)于魯迅簡(jiǎn)介
評(píng)論
0/150
提交評(píng)論