最近想學東西,於是就又拿起前段時間因為「沒時間」而落下的zookeeper
啃了起來,第一次啃完教程發現什麼都不明白,第二次啃完發現,這東西,就這麼"簡單"的東西啊?
先來摘抄一段讓人十分討厭又不得不看的概述
zookeeper是針對大型分布式系統的高可靠的協調系統。由這個定義我們知道zookeeper是個協調系統,作用的物件是分布式系統。好吧,第一次看完這句話,
協調
兩個字吸引我,其他都是廢話。眾所周知分布式的系統非常難以管理,如果開發乙個master又會碰到同步等各種多執行緒(程序)碰到的問題,zookeeper給了我們什麼勇氣能讓我們搞定這個事情,那麼答案如下:
zookeeper的特性
每時每刻我們訪問zookeeper的樹時, 相同節點返回的資料都是一致的.ok,那行,我相信你了啊:p。上面這句話意味著我們對zookeeper進行訪問的時候,無論是什麼時間(就是併發)訪問的時候,不會引起髒讀重複讀等等(真的是這樣麼?其實心中還有點疑慮)。
好吧,暫且拋開疑慮,讓我們看一下zookeeper的本質。說白了zookeeper的資料結構你可以看成是linux的檔案系統(是不是這麼說太簡單粗暴),依照這種方式,zookeeper提供以下幾種特性
/zk_test這幾個路徑是不是看上去很眼熟啊~ 這就是zooker的datamodel了。這些用來幹嘛用呢?/zookeeper
/zk_test/dir
有些博文裡把zookeeper提供的這種命名結構稱之為統一命名服務。 好吧,就是給指定的結點(zookeeper裡面稱之為znode)提供了統一的名稱。前提是知道zookeeper是分布式的,而且zookeeper足夠穩定,所以你的分布式服務的每乙個伺服器都可以找到乙個統一的配置檔案服務
(就是這裡的乙個znode啦),他們在任何時刻讀到的內容都是一致的。因此你可以把你的配置檔案,或者分布式的伺服器列表等資料放入這個znode中,並使用watch監視,如果裡面的內容被修改了,那麼所有的伺服器都會被通知到(這裡使用了觀察者模式咯)。
這個特性是最吸引我的特性了,如何實現分布式鎖呢,就是使用zookeeper提供的有序
且臨時
的znode特性實現。說白了就是需要鎖的程式建立乙個臨時結點,這個結點會在它斷開或者刪除的時候被刪除,它只用檢測下它自己的序號在所有子結點中的序號是不是最小的即可。當然詳細的可以參照zookeeper分布式鎖避免羊群效應(herd effect) 這篇文章,同時寫了如何避免羊群效應。
還有其他其他的一些特性。
這些特性都是基於zookeeper可靠的datamodel上來的。官網可能沒有應用場景的展現。
文章寫的少,文筆好爛,如有錯誤,請指正,非常感謝非常感謝。
Zookeeper入門理解
zookeeper是乙個底層的分布式協調服務工具,把框架告訴它,它自動協調 只要集群中有一台能連上就能獲取zookeeper的資料資訊 1.zookeeper可以做很多服務中介軟體的協調元件,比如hadoop,kafka,hbase.可以協調不同集群節點的狀態。2可以做很多服務中間的配置資料儲存,比...
ZooKeeper入門教程
2.解壓配置 tar zxf apache zookeeper 3.5.5 bin.tar.gz c3.在主目錄下建立data和logs兩個目錄用於儲存資料和日誌 3.5.5 bin mkdir data mkdir logs 4.配置zookeeper 在conf目錄下新建zoo.cfg檔案,寫入...
Zookeeper入門學習資料
zookeeper作為hadoop生態中的一員,屬於那種我們日常經常有意無意用著的,但就是很少專門只用它的一種的軟體 有點像黑子哲也那樣。你說它不重要吧,少了它你kafka,hbase hdfs那些又搞不動,多了它吧,反正那些軟體本身都已經搭好了跟zookeeper的互動,你也幾乎不會呼叫zooke...