zookeeper學(xué)習(xí)認(rèn)識(shí)

所有的努力都為遇見更好的自己

1铐维,zookeeper為我們解決什么樣的問題?

zookeeper是為我們解決分布式系統(tǒng)協(xié)調(diào)服務(wù)的組件蛇耀。

2,zookeeper運(yùn)行條件是什么坎弯?

zookeeper是以Fast Paxos算法為基礎(chǔ)的一個(gè)組件纺涤,F(xiàn)ast Paxos算法在選主的時(shí)候,必須有半數(shù)以上節(jié)點(diǎn)選擇同一個(gè)節(jié)點(diǎn)作為主節(jié)點(diǎn)抠忘,這個(gè)節(jié)點(diǎn)才可以作為主節(jié)點(diǎn)撩炊,所以,zookeeper運(yùn)行條件:
2.1崎脉,必須以集群的方式向外提供服務(wù)拧咳。
2.2,集群數(shù)量最好是奇數(shù)個(gè)囚灼,這樣方便選主(如果有2n個(gè)骆膝,會(huì)出現(xiàn)重復(fù)選主的情況祭衩,可能會(huì)有腦裂)
2.3,集群中必須有半數(shù)以上的節(jié)點(diǎn)在提供服務(wù)阅签,少于半數(shù)掐暮,集群不能向外正常提供服務(wù)。

3政钟,zookeeper特點(diǎn)

3.1劫乱,zookeeper不適合保存大量的數(shù)據(jù),只適合保存一些元數(shù)據(jù)信息(KB級(jí)別的數(shù)據(jù))锥涕,所以不適合作為大量數(shù)據(jù)的存儲(chǔ)系統(tǒng)
3.2衷戈,zookeeper存儲(chǔ)系統(tǒng)結(jié)構(gòu)類似于linux的文件系統(tǒng),其中每個(gè)節(jié)點(diǎn)znode(相當(dāng)于文件系統(tǒng)的某個(gè)文件夾)层坠,可以保存數(shù)據(jù)和向外提供數(shù)據(jù)查詢殖妇。即存取功能,這里只是少量數(shù)據(jù)破花,不能想linux系統(tǒng)文件夾谦趣,存儲(chǔ)大量數(shù)據(jù)。
3.3座每,zookeeper存儲(chǔ)系統(tǒng)的節(jié)點(diǎn)(znode)前鹅,即可以是臨時(shí)性節(jié)點(diǎn)(EPHEMERAL),也可以是永久性的節(jié)點(diǎn)峭梳。用戶可以更具自己的需求舰绘,選擇創(chuàng)建臨時(shí)或者永久性的節(jié)點(diǎn)。臨時(shí)性節(jié)點(diǎn)有個(gè)特征是葱椭,當(dāng)客戶端的session(鏈接)斷開的時(shí)候捂寿,臨時(shí)節(jié)點(diǎn)就會(huì)從zookeeper服務(wù)器中刪除,而永久性節(jié)點(diǎn)則不會(huì)孵运。
3.4秦陋,zookeeper可以提供節(jié)點(diǎn)監(jiān)控,即治笨,當(dāng)某個(gè)節(jié)點(diǎn)的字節(jié)點(diǎn)數(shù)量變化驳概,或者節(jié)點(diǎn)的數(shù)據(jù)發(fā)生變化,可以通知到某個(gè)客戶端旷赖。即事件監(jiān)控的功能顺又。但是每次監(jiān)控只對(duì)一次事件有效,如果需要持續(xù)監(jiān)控杠愧,需要另行處理待榔。

4.zookeeper功能:

zookeeper只有兩點(diǎn)功能,4.1,在znode保存少量數(shù)據(jù)
4.2锐锣,對(duì)節(jié)點(diǎn)進(jìn)行監(jiān)控腌闯,當(dāng)發(fā)生某種變化的時(shí)候,通知到監(jiān)控方雕憔。

5姿骏,利用zookeeper的功能和特點(diǎn),可以幫助我們完成哪些功能

5.1斤彼,配置管理

在我們的應(yīng)用中除了代碼外分瘦,還有一些就是各種配置。比如數(shù)據(jù)庫連接等琉苇。一般我們都是使用配置文件的方式嘲玫,在代碼中引入這些配置文件。但是當(dāng)我們只有一種配置并扇,只有一臺(tái)服務(wù)器去团,并且不經(jīng)常修改的時(shí)候,使用配置文件是一個(gè)很好的做法穷蛹,但是如果我們配置非常多土陪,有很多服務(wù)器都需要這個(gè)配置,而且還可能是動(dòng)態(tài)的話使用配置文件就不是個(gè)好主意了肴熏。這個(gè)時(shí)候往往需要尋找一種集中管理配置的方法鬼雀,我們?cè)谶@個(gè)集中的地方修改了配置,所有對(duì)這個(gè)配置感興趣的都可以獲得變更蛙吏。比如我們可以把配置放在數(shù)據(jù)庫里源哩,然后所有需要配置的服務(wù)都去這個(gè)數(shù)據(jù)庫讀取配置。但是出刷,因?yàn)楹芏喾?wù)的正常運(yùn)行都非常依賴這個(gè)配置璧疗,所以需要這個(gè)集中提供配置服務(wù)的服務(wù)具備很高的可靠性。一般我們可以用一個(gè)集群來提供這個(gè)配置服務(wù)馁龟,但是用集群提升可靠性,那如何保證配置在集群中的一致性呢漆魔? 這個(gè)時(shí)候就需要使用一種實(shí)現(xiàn)了一致性協(xié)議的服務(wù)了坷檩。Zookeeper就是這種服務(wù),它使用Zab這種一致性協(xié)議來提供一致性「穆眨現(xiàn)在有很多開源項(xiàng)目使用Zookeeper來維護(hù)配置矢炼,比如在HBase中,客戶端就是連接一個(gè)Zookeeper阿纤,獲得必要的HBase集群的配置信息句灌,然后才可以進(jìn)一步操作。還有在開源的消息隊(duì)列Kafka中,也使用Zookeeper來維護(hù)broker的信息胰锌。在Alibaba開源的SOA框架Dubbo中也廣泛的使用Zookeeper管理一些配置來實(shí)現(xiàn)服務(wù)治理骗绕。

5.2名字服務(wù)

名字服務(wù)這個(gè)就很好理解了。比如為了通過網(wǎng)絡(luò)訪問一個(gè)系統(tǒng)资昧,我們得知道對(duì)方的IP地址酬土,但是IP地址對(duì)人非常不友好,這個(gè)時(shí)候我們就需要使用域名來訪問格带。但是計(jì)算機(jī)是不能是別域名的撤缴。怎么辦呢?如果我們每臺(tái)機(jī)器里都備有一份域名到IP地址的映射叽唱,這個(gè)倒是能解決一部分問題屈呕,但是如果域名對(duì)應(yīng)的IP發(fā)生變化了又該怎么辦呢?于是我們有了DNS這個(gè)東西棺亭。我們只需要訪問一個(gè)大家熟知的(known)的點(diǎn)凉袱,它就會(huì)告訴你這個(gè)域名對(duì)應(yīng)的IP是什么。在我們的應(yīng)用中也會(huì)存在很多這類問題侦铜,特別是在我們的服務(wù)特別多的時(shí)候专甩,如果我們?cè)诒镜乇4娣?wù)的地址的時(shí)候?qū)⒎浅2环奖悖侨绻覀冎恍枰L問一個(gè)大家都熟知的訪問點(diǎn)钉稍,這里提供統(tǒng)一的入口涤躲,那么維護(hù)起來將方便得多了。

5.3分布式鎖

其實(shí)在第一篇文章中已經(jīng)介紹了Zookeeper是一個(gè)分布式協(xié)調(diào)服務(wù)贡未。這樣我們就可以利用Zookeeper來協(xié)調(diào)多個(gè)分布式進(jìn)程之間的活動(dòng)种樱。比如在一個(gè)分布式環(huán)境中,為了提高可靠性俊卤,我們的集群的每臺(tái)服務(wù)器上都部署著同樣的服務(wù)嫩挤。但是,一件事情如果集群中的每個(gè)服務(wù)器都進(jìn)行的話消恍,那相互之間就要協(xié)調(diào)岂昭,編程起來將非常復(fù)雜。而如果我們只讓一個(gè)服務(wù)進(jìn)行操作狠怨,那又存在單點(diǎn)约啊。通常還有一種做法就是使用分布式鎖,在某個(gè)時(shí)刻只讓一個(gè)服務(wù)去干活佣赖,當(dāng)這臺(tái)服務(wù)出問題的時(shí)候鎖釋放恰矩,立即fail over到另外的服務(wù)。這在很多分布式系統(tǒng)中都是這么做憎蛤,這種設(shè)計(jì)有一個(gè)更好聽的名字叫Leader Election(leader選舉)外傅。比如HBase的Master就是采用這種機(jī)制。但要注意的是分布式鎖跟同一個(gè)進(jìn)程的鎖還是有區(qū)別的,所以使用的時(shí)候要比同一個(gè)進(jìn)程里的鎖更謹(jǐn)慎的使用萎胰。

5.4集群管理

在分布式的集群中碾盟,經(jīng)常會(huì)由于各種原因,比如硬件故障奥洼,軟件故障巷疼,網(wǎng)絡(luò)問題,有些節(jié)點(diǎn)會(huì)進(jìn)進(jìn)出出灵奖。有新的節(jié)點(diǎn)加入進(jìn)來嚼沿,也有老的節(jié)點(diǎn)退出集群。這個(gè)時(shí)候瓷患,集群中其他機(jī)器需要感知到這種變化骡尽,然后根據(jù)這種變化做出對(duì)應(yīng)的決策。比如我們是一個(gè)分布式存儲(chǔ)系統(tǒng)擅编,有一個(gè)中央控制節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)的分配攀细,當(dāng)有新的存儲(chǔ)進(jìn)來的時(shí)候我們要根據(jù)現(xiàn)在集群目前的狀態(tài)來分配存儲(chǔ)節(jié)點(diǎn)。這個(gè)時(shí)候我們就需要?jiǎng)討B(tài)感知到集群目前的狀態(tài)爱态。還有谭贪,比如一個(gè)分布式的SOA架構(gòu)中,服務(wù)是一個(gè)集群提供的锦担,當(dāng)消費(fèi)者訪問某個(gè)服務(wù)時(shí)俭识,就需要采用某種機(jī)制發(fā)現(xiàn)現(xiàn)在有哪些節(jié)點(diǎn)可以提供該服務(wù)(這也稱之為服務(wù)發(fā)現(xiàn),比如Alibaba開源的SOA框架Dubbo就采用了Zookeeper作為服務(wù)發(fā)現(xiàn)的底層機(jī)制)洞渔。還有開源的Kafka隊(duì)列就采用了Zookeeper作為Cosnumer的上下線管理套媚。

5.5,所有在分布式系統(tǒng)遇到的問題磁椒,都可以嘗試著去用zookeeper作為方向去解決

未完待續(xù)堤瘤。。浆熔。本辐。。蘸拔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末师郑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子调窍,更是在濱河造成了極大的恐慌,老刑警劉巖张遭,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邓萨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缔恳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門宝剖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人歉甚,你說我怎么就攤上這事万细。” “怎么了纸泄?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵赖钞,是天一觀的道長。 經(jīng)常有香客問我聘裁,道長雪营,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任衡便,我火速辦了婚禮献起,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镣陕。我一直安慰自己谴餐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布呆抑。 她就那樣靜靜地躺著岂嗓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪理肺。 梳的紋絲不亂的頭發(fā)上摄闸,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音妹萨,去河邊找鬼年枕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乎完,可吹牛的內(nèi)容都是我干的熏兄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼树姨,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼摩桶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起帽揪,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤硝清,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后转晰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芦拿,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡士飒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔗崎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酵幕。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缓苛,靈堂內(nèi)的尸體忽然破棺而出芳撒,到底是詐尸還是另有隱情,我是刑警寧澤未桥,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布笔刹,位于F島的核電站,受9級(jí)特大地震影響钢属,放射性物質(zhì)發(fā)生泄漏徘熔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一淆党、第九天 我趴在偏房一處隱蔽的房頂上張望酷师。 院中可真熱鬧,春花似錦染乌、人聲如沸山孔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽台颠。三九已至,卻和暖如春勒庄,著一層夾襖步出監(jiān)牢的瞬間串前,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工实蔽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荡碾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓局装,卻偏偏與公主長得像坛吁,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铐尚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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