摘要:好吧,就是給指定的結(jié)點里面稱之為提供了統(tǒng)一的名稱。分布式鎖服務(wù)這個特性是最吸引我的特性了,如何實現(xiàn)分布式鎖呢,就是使用提供的有序且臨時的特性實現(xiàn)。當(dāng)然詳細(xì)的可以參照分布式鎖避免羊群效應(yīng)這篇文章,同時寫了如何避免羊群效應(yīng)。
最近想學(xué)東西,于是就又拿起前段時間因為“沒時間”而落下的zookeeper啃了起來,第一次啃完教程發(fā)現(xiàn)什么都不明白,第二次啃完發(fā)現(xiàn),這東西,就這么"簡單"的東西?。?/p>
先來摘抄一段讓人十分討厭又不得不看的概述
Zookeeper是針對大型分布式系統(tǒng)的高可靠的協(xié)調(diào)系統(tǒng)。由這個定義我們知道zookeeper是個協(xié)調(diào)系統(tǒng),作用的對象是分布式系統(tǒng)。
好吧,第一次看完這句話,協(xié)調(diào)兩個字吸引我,其他都是廢話。眾所周知分布式的系統(tǒng)非常難以管理,如果開發(fā)一個master又會碰到同步等各種多線程(進(jìn)程)碰到的問題,zookeeper給了我們什么勇氣能讓我們搞定這個事情,那么答案如下:
zookeeper的特性
每時每刻我們訪問zookeeper的樹時, 相同節(jié)點返回的數(shù)據(jù)都是一致的.
OK,那行,我相信你了啊:P。上面這句話意味著我們對Zookeeper進(jìn)行訪問的時候,無論是什么時間(就是并發(fā))訪問的時候,不會引起臟讀重復(fù)讀等等(真的是這樣么?其實心中還有點疑慮)。
好吧,暫且拋開疑慮,讓我們看一下zookeeper的本質(zhì)。說白了zookeeper的數(shù)據(jù)結(jié)構(gòu)你可以看成是linux的文件系統(tǒng)(是不是這么說太簡單粗暴),依照這種方式,zookeeper提供以下幾種特性
統(tǒng)一命名服務(wù)/zk_test
/zookeeper
/zk_test/dir
這幾個路徑是不是看上去很眼熟啊~ 這就是zooker的DataModel了。這些用來干嘛用呢?
有些博文里把zookeeper提供的這種命名結(jié)構(gòu)稱之為統(tǒng)一命名服務(wù)。 好吧,就是給指定的結(jié)點(zookeeper里面稱之為znode)提供了統(tǒng)一的名稱。前提是知道zookeeper是分布式的,而且zookeeper足夠穩(wěn)定,所以你的分布式服務(wù)的每一個服務(wù)器都可以找到一個統(tǒng)一的配置文件服務(wù)(就是這里的一個znode啦),他們在任何時刻讀到的內(nèi)容都是一致的。因此你可以把你的配置文件,或者分布式的服務(wù)器列表等數(shù)據(jù)放入這個znode中,并使用watch監(jiān)視,如果里面的內(nèi)容被修改了,那么所有的服務(wù)器都會被通知到(這里使用了觀察者模式咯)。
這個特性是最吸引我的特性了,如何實現(xiàn)分布式鎖呢,就是使用zookeeper提供的有序且臨時的znode特性實現(xiàn)。說白了就是需要鎖的程序創(chuàng)建一個臨時結(jié)點,這個結(jié)點會在它斷開或者刪除的時候被刪除,它只用檢測下它自己的序號在所有子結(jié)點中的序號是不是最小的即可。當(dāng)然詳細(xì)的可以參照zookeeper分布式鎖避免羊群效應(yīng)(Herd Effect) 這篇文章,同時寫了如何避免羊群效應(yīng)。
還有其他其他的一些特性。
這些特性都是基于zookeeper可靠的DataModel上來的。官網(wǎng)可能沒有應(yīng)用場景的展現(xiàn)。
以上是Zookeeper的介紹,我想寫下一篇去介紹下官網(wǎng)的demo。
文章寫的少,文筆好爛,如有錯誤,請指正,非常感謝非常感謝。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/64222.html
摘要:就是上面提到的變化后執(zhí)行的程序。這段代碼是的構(gòu)造函數(shù),除了里面的一些賦值函數(shù),重點說下這個函數(shù)它有個參數(shù),第一個參數(shù)是你要的名字,類似這樣的。 昨晚微信開放了JS接口。忙活了一晚上。 然后周六就沒啥斗志了,突然想起第二篇說好要介紹demo的沒介紹,就趕緊來寫了。 先來個 傳送門 這里簡單介紹了下官方demo。用來演示Zookeeper官方推薦的程序框架(Executor、DataM...
摘要:是一個日志收集器,支持非常多的輸入源和輸出源。這個庫支持展開文件路徑,而且會記錄一個叫的數(shù)據(jù)庫文件來跟蹤被監(jiān)聽的日志文件的當(dāng)前讀取位置。 1.Zookeeper 對于Zookeeper我們用一條簡單的命令來測試一下: echo ruok|nc localhost 2181 你應(yīng)該可以看到: imok 2.Kafka Kafka 是由 Linked 開發(fā)并且開源的一套分布式的流平臺,它類...
摘要:后面聽到的時候,是因為可以作為分布式鎖的一種實現(xiàn)。二為什么能干這么多從上面我們可以知道,可以用來做統(tǒng)一配置管理統(tǒng)一命名服務(wù)分布式鎖集群管理。 前言 只有光頭才能變強(qiáng)。文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y 上次寫了一篇 什么是消息隊列?以后,本來想入門一下Kafka的(裝一下環(huán)境、看看Kafka一些概念...
閱讀 2067·2021-10-12 10:12
閱讀 788·2021-09-24 09:47
閱讀 1187·2021-08-19 11:12
閱讀 3461·2019-08-29 13:06
閱讀 681·2019-08-26 11:43
閱讀 2563·2019-08-23 17:20
閱讀 1146·2019-08-23 16:52
閱讀 2593·2019-08-23 14:27