大數(shù)據(jù)面試必知必會@2019-01-09

Zookeeper是什么

Zookeeper是一個分布式的泼差,開源的分布式應用程序協(xié)調(diào)服務躯概,是Google的Chubby一個開源的實現(xiàn)年栓,是Hadoop和HBase導致重要組件。它是一個為分布式應用提供一致性服務的軟件糜烹,提供的功能包括:配置維護违诗、域名服務、分布式同步疮蹦,組服務等诸迟。

為什么使用Zookeeper

  • 大部分的分布式應用程序都需要一個主控、協(xié)調(diào)器或者控制器來物理分布的子進程(如資源愕乎,內(nèi)存分配等)
  • 目前大部分應用開發(fā)私有的協(xié)調(diào)程序亮蒋,缺乏一個通用性
  • 協(xié)調(diào)程序的反復編寫浪費,難以形成通用妆毕、伸縮性好的協(xié)調(diào)器
  • ZooKeeper:提供通用的分布式鎖服務,用以協(xié)調(diào)分布式應用

Zookeeper三種角色

Leader
整個Zookeeper集群工作機制中的核心贮尖。Leader作為整個Zookeeper集群的主節(jié)點笛粘,負責響應所有對Zookeeper狀態(tài)變更的請求。
主要工作:

  • 事務請求的唯一調(diào)度和處理湿硝,保證集群處理事務的順序性
  • 集群內(nèi)各服務的調(diào)度者薪前。

Follower
是Zookeeper集群狀態(tài)的跟隨者。它的邏輯相對簡單关斜。除了響應本服務器上的讀請求外示括,follower還要處理leader的提議,并在leader提交該提議時在本地也進行提交痢畜。另外需要注意的是垛膝,leader和follower構(gòu)成Zookeeper集群的法定人數(shù),也就是說丁稀,只有它們才參與新leader的選舉吼拥,響應leader的提議。

Observer
觀察者线衫。如果Zookeeper集群的讀取負載很高凿可,或者客戶端多到跨機房,可以設(shè)置一些observer服務器授账,以提高讀取的吞吐量枯跑。Observer和Follower比較相似惨驶,只有一些小區(qū)別:

  • 首先Observer不屬于法定人數(shù),即不參加選舉也不響應提議敛助,也不參與寫操作的過半寫成功策略
  • observer不需要將食物持久化到磁盤粗卜,一旦observer被重啟,需要從leader重新同步整個名字空間

Zookeeper Leader選舉過程

Leader選舉是保證分布式數(shù)據(jù)一致性的關(guān)鍵所在辜腺。當Zookeeper集群中的一臺服務器出現(xiàn)以下兩種情況之一是休建,需要進入Leader選舉。

  1. 服務器初始化啟動
  2. 服務器運行期間無法和Leader保持連接

服務器初始化時期Leader選舉

  1. 每個Server發(fā)出一個投票评疗。初始情況下测砂,每個Server都會將自己作為Leader服務器來進行投票,每次投票會包含所推舉的myid和ZXID百匆,使用(myid砌些,ZXID)來表示,然后各自將這個投票發(fā)給集群中其他機器
  2. 接受來自各個服務器的投票加匈。集群的每個服務器收到投票后存璃,首先判斷該投票的有小型,如檢查是否是本輪投票雕拼、是否來自LOOKING狀態(tài)的服務器纵东。
  3. 處理投票。針對每一個投票啥寇,服務器都需要將別人的投票和自己的投票進行PK偎球,PK規(guī)則如果下:
    • 優(yōu)先檢查ZXID。ZXID比較大的服務器優(yōu)先作為Leader
    • 如果ZXID相同辑甜,那么就比較myid衰絮。myid較大的服務器作為Leader服務器。
  4. 統(tǒng)計投票磷醋。每次投票后猫牡,服務器都會統(tǒng)計投票信息,判斷是否已經(jīng)有過半機器接收到相同的投票信息邓线。
  5. 改變服務器狀態(tài)淌友。一旦確定了Leader。每個服務器就會更新自己的狀態(tài)褂痰,如果是Follower亩进,那么就變更為FOLLOWING,如果是Leader缩歪,就變更狀態(tài)為LEADING归薛。

服務器運行期間Leader選舉

  1. 變更狀態(tài)。Leader掛后,余下的非Observer服務器都會講自己的服務器狀態(tài)變?yōu)長OKKING主籍,然后開始進入Leader選舉過程习贫。
  2. 每個Server會發(fā)出一個投票。在運行期間千元,每個服務器上的ZXID可能不同苫昌,每個服務器向集群中多有機器發(fā)送投票信息(myid,ZXID)
  3. 接收來自各個服務器的投票幸海。與啟動時過程相同祟身。
  4. 處理投票。與啟動時過程相同物独。
  5. 統(tǒng)計投票袜硫。與啟動時過程相同。
  6. 改變服務器的狀態(tài)挡篓。與啟動時過程相同婉陷。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市官研,隨后出現(xiàn)的幾起案子秽澳,更是在濱河造成了極大的恐慌,老刑警劉巖戏羽,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件担神,死亡現(xiàn)場離奇詭異,居然都是意外死亡始花,警方通過查閱死者的電腦和手機杏瞻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衙荐,“玉大人,你說我怎么就攤上這事浮创∮且鳎” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵斩披,是天一觀的道長溜族。 經(jīng)常有香客問我,道長垦沉,這世上最難降的妖魔是什么煌抒? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮厕倍,結(jié)果婚禮上寡壮,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好况既,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布这溅。 她就那樣靜靜地躺著,像睡著了一般棒仍。 火紅的嫁衣襯著肌膚如雪悲靴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天莫其,我揣著相機與錄音癞尚,去河邊找鬼。 笑死乱陡,一個胖子當著我的面吹牛浇揩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛋褥,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼临燃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烙心?” 一聲冷哼從身側(cè)響起膜廊,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淫茵,沒想到半個月后爪瓜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡匙瘪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年铆铆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丹喻。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡薄货,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碍论,到底是詐尸還是另有隱情谅猾,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布鳍悠,位于F島的核電站税娜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏藏研。R本人自食惡果不足惜敬矩,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蠢挡。 院中可真熱鬧弧岳,春花似錦凳忙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瞎抛,卻和暖如春艺演,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桐臊。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工胎撤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人断凶。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓伤提,卻偏偏與公主長得像,于是被迫代替她去往敵國和親认烁。 傳聞我的和親對象是個殘疾皇子肿男,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容