青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 200, comments - 8, trackbacks - 0, articles - 0

Zookeeper工作原理

Posted on 2013-06-22 23:03 鑫龍 閱讀(514) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 分布式

ZooKeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),它包含一個(gè)簡(jiǎn)單的原語(yǔ)集,分布式應(yīng)用程序可以基于它實(shí)現(xiàn)同步服務(wù),配置維護(hù)和命名服務(wù)等。Zookeeper是hadoop的一個(gè)子項(xiàng)目,其發(fā)展歷程無(wú)需贅述。在分布式應(yīng)用中,由于工程師不能很好地使用鎖機(jī)制,以及基于消息的協(xié)調(diào)機(jī)制不適合在某些應(yīng)用中使用,因此需要有一種可靠的、可擴(kuò)展的、分布式的、可配置的協(xié)調(diào)機(jī)制來(lái)統(tǒng)一系統(tǒng)的狀態(tài)。Zookeeper的目的就在于此。本文簡(jiǎn)單分析zookeeper的工作原理,對(duì)于如何使用zookeeper不是本文討論的重點(diǎn)。

1 Zookeeper的基本概念

1.1 角色

Zookeeper中的角色主要有以下三類(lèi),如下表所示:

1.2 設(shè)計(jì)目的

1.最終一致性:client不論連接到哪個(gè)Server,展示給它都是同一個(gè)視圖,這是zookeeper最重要的性能。

2 .可靠性:具有簡(jiǎn)單、健壯、良好的性能,如果消息m被到一臺(tái)服務(wù)器接受,那么它將被所有的服務(wù)器接受。

3 .實(shí)時(shí)性:Zookeeper保證客戶(hù)端將在一個(gè)時(shí)間間隔范圍內(nèi)獲得服務(wù)器的更新信息,或者服務(wù)器失效的信息。但由于網(wǎng)絡(luò)延時(shí)等原因,Zookeeper不能保證兩個(gè)客戶(hù)端能同時(shí)得到剛更新的數(shù)據(jù),如果需要最新數(shù)據(jù),應(yīng)該在讀數(shù)據(jù)之前調(diào)用sync()接口。

4 .等待無(wú)關(guān)(wait-free):慢的或者失效的client不得干預(yù)快速的client的請(qǐng)求,使得每個(gè)client都能有效的等待。

5.原子性:更新只能成功或者失敗,沒(méi)有中間狀態(tài)。

6 .順序性:包括全局有序和偏序兩種:全局有序是指如果在一臺(tái)服務(wù)器上消息a在消息b前發(fā)布,則在所有Server上消息a都將在消息b前被發(fā)布;偏序是指如果一個(gè)消息b在消息a后被同一個(gè)發(fā)送者發(fā)布,a必將排在b前面。

2 ZooKeeper的工作原理

Zookeeper的核心是原子廣播,這個(gè)機(jī)制保證了各個(gè)Server之間的同步。實(shí)現(xiàn)這個(gè)機(jī)制的協(xié)議叫做Zab協(xié)議。Zab協(xié)議有兩種模式,它們分別是恢復(fù)模式(選主)和廣播模式(同步)。當(dāng)服務(wù)啟動(dòng)或者在領(lǐng)導(dǎo)者崩潰后,Zab就進(jìn)入了恢復(fù)模式,當(dāng)領(lǐng)導(dǎo)者被選舉出來(lái),且大多數(shù)Server完成了和leader的狀態(tài)同步以后,恢復(fù)模式就結(jié)束了。狀態(tài)同步保證了leader和Server具有相同的系統(tǒng)狀態(tài)。

為了保證事務(wù)的順序一致性,zookeeper采用了遞增的事務(wù)id號(hào)(zxid)來(lái)標(biāo)識(shí)事務(wù)。所有的提議(proposal)都在被提出的時(shí)候加上了zxid。實(shí)現(xiàn)中zxid是一個(gè)64位的數(shù)字,它高32位是epoch用來(lái)標(biāo)識(shí)leader關(guān)系是否改變,每次一個(gè)leader被選出來(lái),它都會(huì)有一個(gè)新的epoch,標(biāo)識(shí)當(dāng)前屬于那個(gè)leader的統(tǒng)治時(shí)期。低32位用于遞增計(jì)數(shù)。

每個(gè)Server在工作過(guò)程中有三種狀態(tài):

  • LOOKING:當(dāng)前Server不知道leader是誰(shuí),正在搜尋
  • LEADING:當(dāng)前Server即為選舉出來(lái)的leader
  • FOLLOWING:leader已經(jīng)選舉出來(lái),當(dāng)前Server與之同步

2.1 選主流程

當(dāng)leader崩潰或者leader失去大多數(shù)的follower,這時(shí)候zk進(jìn)入恢復(fù)模式,恢復(fù)模式需要重新選舉出一個(gè)新的leader,讓所有的Server都恢復(fù)到一個(gè)正確的狀態(tài)。Zk的選舉算法有兩種:一種是基于basic paxos實(shí)現(xiàn)的,另外一種是基于fast paxos算法實(shí)現(xiàn)的。系統(tǒng)默認(rèn)的選舉算法為fast paxos。先介紹basic paxos流程:

  1. 1 .選舉線程由當(dāng)前Server發(fā)起選舉的線程擔(dān)任,其主要功能是對(duì)投票結(jié)果進(jìn)行統(tǒng)計(jì),并選出推薦的Server;
  2. 2 .選舉線程首先向所有Server發(fā)起一次詢(xún)問(wèn)(包括自己);
  3. 3 .選舉線程收到回復(fù)后,驗(yàn)證是否是自己發(fā)起的詢(xún)問(wèn)(驗(yàn)證zxid是否一致),然后獲取對(duì)方的id(myid),并存儲(chǔ)到當(dāng)前詢(xún)問(wèn)對(duì)象列表中,最后獲取對(duì)方提議的leader相關(guān)信息(id,zxid),并將這些信息存儲(chǔ)到當(dāng)次選舉的投票記錄表中;
  4. 4.  收到所有Server回復(fù)以后,就計(jì)算出zxid最大的那個(gè)Server,并將這個(gè)Server相關(guān)信息設(shè)置成下一次要投票的Server;
  5. 5.  線程將當(dāng)前zxid最大的Server設(shè)置為當(dāng)前Server要推薦的Leader,如果此時(shí)獲勝的Server獲得n/2 + 1的Server票數(shù), 設(shè)置當(dāng)前推薦的leader為獲勝的Server,將根據(jù)獲勝的Server相關(guān)信息設(shè)置自己的狀態(tài),否則,繼續(xù)這個(gè)過(guò)程,直到leader被選舉出來(lái)。

通過(guò)流程分析我們可以得出:要使Leader獲得多數(shù)Server的支持,則Server總數(shù)必須是奇數(shù)2n+1,且存活的Server的數(shù)目不得少于n+1.

每個(gè)Server啟動(dòng)后都會(huì)重復(fù)以上流程。在恢復(fù)模式下,如果是剛從崩潰狀態(tài)恢復(fù)的或者剛啟動(dòng)的server還會(huì)從磁盤(pán)快照中恢復(fù)數(shù)據(jù)和會(huì)話信息,zk會(huì)記錄事務(wù)日志并定期進(jìn)行快照,方便在恢復(fù)時(shí)進(jìn)行狀態(tài)恢復(fù)。選主的具體流程圖如下所示:


fast paxos流程是在選舉過(guò)程中,某Server首先向所有Server提議自己要成為leader,當(dāng)其它Server收到提議以后,解決epoch和zxid的沖突,并接受對(duì)方的提議,然后向?qū)Ψ桨l(fā)送接受提議完成的消息,重復(fù)這個(gè)流程,最后一定能選舉出Leader。其流程圖如下所示:

2.2 同步流程

選完leader以后,zk就進(jìn)入狀態(tài)同步過(guò)程。

  1. 1. leader等待server連接;
  2. 2 .Follower連接leader,將最大的zxid發(fā)送給leader;
  3. 3 .Leader根據(jù)follower的zxid確定同步點(diǎn);
  4. 4 .完成同步后通知follower 已經(jīng)成為uptodate狀態(tài);
  5. 5 .Follower收到uptodate消息后,又可以重新接受client的請(qǐng)求進(jìn)行服務(wù)了。

流程圖如下所示:


2.3 工作流程

2.3.1 Leader工作流程

Leader主要有三個(gè)功能:

  1. 1 .恢復(fù)數(shù)據(jù);
  2. 2 .維持與Learner的心跳,接收Learner請(qǐng)求并判斷Learner的請(qǐng)求消息類(lèi)型;
  3. 3 .Learner的消息類(lèi)型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息,根據(jù)不同的消息類(lèi)型,進(jìn)行不同的處理。

PING消息是指Learner的心跳信息;REQUEST消息是Follower發(fā)送的提議信息,包括寫(xiě)請(qǐng)求及同步請(qǐng)求;ACK消息是Follower的對(duì)提議的回復(fù),超過(guò)半數(shù)的Follower通過(guò),則commit該提議;REVALIDATE消息是用來(lái)延長(zhǎng)SESSION有效時(shí)間。
Leader的工作流程簡(jiǎn)圖如下所示,在實(shí)際實(shí)現(xiàn)中,流程要比下圖復(fù)雜得多,啟動(dòng)了三個(gè)線程來(lái)實(shí)現(xiàn)功能。


2.3.2 Follower工作流程

Follower主要有四個(gè)功能:

  1. 1. 向Leader發(fā)送請(qǐng)求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息);
  2. 2 .接收Leader消息并進(jìn)行處理;
  3. 3 .接收Client的請(qǐng)求,如果為寫(xiě)請(qǐng)求,發(fā)送給Leader進(jìn)行投票;
  4. 4 .返回Client結(jié)果。

Follower的消息循環(huán)處理如下幾種來(lái)自Leader的消息:

  1. 1 .PING消息: 心跳消息;
  2. 2 .PROPOSAL消息:Leader發(fā)起的提案,要求Follower投票;
  3. 3 .COMMIT消息:服務(wù)器端最新一次提案的信息;
  4. 4 .UPTODATE消息:表明同步完成;
  5. 5 .REVALIDATE消息:根據(jù)Leader的REVALIDATE結(jié)果,關(guān)閉待revalidate的session還是允許其接受消息;
  6. 6 .SYNC消息:返回SYNC結(jié)果到客戶(hù)端,這個(gè)消息最初由客戶(hù)端發(fā)起,用來(lái)強(qiáng)制得到最新的更新。

Follower的工作流程簡(jiǎn)圖如下所示,在實(shí)際實(shí)現(xiàn)中,F(xiàn)ollower是通過(guò)5個(gè)線程來(lái)實(shí)現(xiàn)功能的。



對(duì)于observer的流程不再敘述,observer流程和Follower的唯一不同的地方就是observer不會(huì)參加leader發(fā)起的投票。


只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美视频一区二区三区| 国产精品欧美久久久久无广告| 亚洲欧洲精品成人久久奇米网| 亚洲欧美国产毛片在线| 亚洲日本免费电影| 亚洲激情图片小说视频| 一区在线观看| 亚洲人成人一区二区在线观看| 亚洲国产高清在线| 亚洲日本中文字幕| 亚洲一区二区视频| 久久久亚洲人| 免费在线观看一区二区| 欧美激情中文字幕一区二区| 夜夜精品视频一区二区| 午夜精品一区二区三区在线视 | 欧美日韩亚洲天堂| 欧美日韩综合久久| 国产色视频一区| 最新高清无码专区| 亚洲男人天堂2024| 美国十次了思思久久精品导航| 亚洲国产天堂久久国产91| 亚洲午夜三级在线| 久久综合给合久久狠狠狠97色69| 欧美美女bbbb| 国产在线日韩| 亚洲天堂网在线观看| 久久久99久久精品女同性| 亚洲人成绝费网站色www| 亚洲欧美精品在线观看| 欧美激情一区二区三区成人| 国产精品久久久久一区| 91久久精品一区二区别| 欧美一区二区在线| 日韩视频在线免费观看| 久久国产精品久久久久久| 欧美婷婷久久| 亚洲精品欧美| 美女视频黄 久久| 夜夜嗨av一区二区三区四季av| 麻豆精品在线观看| 激情懂色av一区av二区av| 欧美一区二区三区电影在线观看| 亚洲高清久久网| 久久精品国产清自在天天线| 国产精品国产精品国产专区不蜜| 亚洲黑丝一区二区| 久久精品国产亚洲一区二区三区| 91久久精品一区二区三区| 亚洲免费福利视频| 欧美日韩免费一区二区三区视频| 欧美日本二区| 国产情人节一区| 一本色道久久综合精品竹菊| 欧美中文字幕不卡| 亚洲视频在线观看三级| 欧美精品免费播放| 亚洲黄色在线看| 欧美不卡高清| 久久躁日日躁aaaaxxxx| 国产亚洲一级| 久久精品成人一区二区三区| 亚洲嫩草精品久久| 国产精品免费看片| 欧美怡红院视频| 亚洲欧美不卡| 国产精品午夜av在线| 欧美在线91| 欧美亚洲免费电影| 国产精品日韩一区二区三区| 欧美一级专区免费大片| 亚洲一区二区少妇| 国产午夜久久久久| 久久久欧美精品sm网站| 久久免费偷拍视频| 亚洲欧洲日本mm| 亚洲黄色在线| 国产精品家庭影院| 欧美一区二区视频在线| 久久久久国产精品一区| 91久久香蕉国产日韩欧美9色| 亚洲韩国一区二区三区| 欧美日韩一区二区三区四区在线观看 | 欧美一级成年大片在线观看| 夜夜嗨av色一区二区不卡| 国产精品久久久久久久久久三级| 欧美亚洲尤物久久| 久久在线精品| 亚洲中午字幕| 久久国产精品网站| 亚洲伦理久久| 亚洲在线成人| 亚洲欧洲另类国产综合| 一本久道综合久久精品| 黄色亚洲免费| 亚洲精品一线二线三线无人区| 国产精品日本欧美一区二区三区| 久久综合久久美利坚合众国| 蜜桃久久av一区| 亚洲欧美一级二级三级| 欧美主播一区二区三区美女 久久精品人| 今天的高清视频免费播放成人| 亚洲三级国产| 国产乱码精品一区二区三区五月婷 | 国产视频在线一区二区| 欧美激情一区二区在线| 欧美性猛片xxxx免费看久爱 | 国产精品黄页免费高清在线观看| 久久午夜色播影院免费高清| 男人天堂欧美日韩| 欧美一区2区三区4区公司二百| 久久综合狠狠综合久久综合88| 亚洲男同1069视频| 欧美sm视频| 久久久久欧美| 国产精品永久| 在线亚洲一区二区| 国内免费精品永久在线视频| 亚洲精品一区二区三区99| 在线观看视频日韩| 亚洲一区二区四区| 亚洲一二三区精品| 欧美精品久久一区二区| 欧美激情在线有限公司| 在线精品在线| 久久精品首页| 久久婷婷国产综合国色天香| 国产日韩一区| 一区二区三区不卡视频在线观看 | 免费h精品视频在线播放| 欧美一区激情| 国产精品二区在线| 亚洲伦伦在线| 亚洲天天影视| 欧美日韩国产一区二区三区地区 | 午夜精品亚洲一区二区三区嫩草| 欧美日韩国产专区| 亚洲三级视频| 亚洲美女电影在线| 欧美精品一区二区在线播放| 亚洲国产精品va| 亚洲精品资源| 欧美成人一区在线| 亚洲国产精品ⅴa在线观看| 最新精品在线| 欧美劲爆第一页| 亚洲美女毛片| 日韩午夜一区| 欧美日韩中文字幕精品| 亚洲在线网站| 久久久最新网址| 怡红院av一区二区三区| 美女国产一区| 9i看片成人免费高清| 亚洲专区在线视频| 国产一区二区三区四区在线观看 | 国产精品久久一区主播| 亚洲一区二区三区乱码aⅴ| 午夜在线播放视频欧美| 久久国产欧美日韩精品| 国产综合欧美在线看| 久久亚洲电影| 99精品欧美一区二区三区综合在线 | 国产日韩欧美综合在线| 久久一本综合频道| 亚洲人成在线观看| 午夜日本精品| 韩国一区二区三区美女美女秀| 久久女同互慰一区二区三区| 亚洲国产精品精华液2区45| 亚洲免费视频网站| 国内精品久久久久久久影视麻豆| 欧美**字幕| 香蕉尹人综合在线观看| 亚洲激情电影在线| 久久久噜噜噜久噜久久| 在线视频精品一| 激情成人av在线| 国产精品久久九九| 欧美91大片| 羞羞色国产精品| 亚洲大片av| 欧美伊久线香蕉线新在线| 99这里只有精品| 激情久久久久久久久久久久久久久久| 欧美日韩高清区| 另类综合日韩欧美亚洲| 亚洲一区免费| 亚洲国产日韩一级| 久久综合999| 欧美中文字幕精品| 亚洲一品av免费观看| 亚洲成在线观看| 国产精品久久波多野结衣| 欧美日韩大片一区二区三区| 能在线观看的日韩av| 久久亚洲私人国产精品va| 性欧美暴力猛交69hd| 亚洲最新合集|