在學(xué)習(xí)技術(shù)的過程中,我發(fā)現(xiàn)程序的版本一直在變,每個(gè)人的情況也不一樣,在參考網(wǎng)上的教程的時(shí)候,都或多或少有這樣或者那樣的問題,在學(xué)習(xí)和實(shí)踐之后發(fā)現(xiàn),最好的學(xué)習(xí)教程就是Apache的官網(wǎng),最好的學(xué)習(xí)方式就是動(dòng)手操作并總結(jié),下面就按照這種學(xué)習(xí)方式來總結(jié)一下如何“真真切切”地掌握ZooKeeper。(原諒我的調(diào)皮,使用了真真切切這個(gè)詞。但我就是這種感覺,很多組件就是學(xué)怎么搭建,然后怎么用,別的什么都不懂,感覺特別不真實(shí) _)
打開官網(wǎng) http://zookeeper.apache.org

Getting Started
從官網(wǎng)的文檔開始學(xué)起,點(diǎn)擊learn about打開documentation,點(diǎn)擊Getting Started,如下圖所示(如果打開之后跟下圖有所不同,就以打開的為主,這里主要是示范如何使用官方的文檔)。

1.單機(jī)模式(Standalone Operation)
下載zookeeper(下簡稱zk)之后解壓到合適(如果只是測(cè)試zk的話,解壓到哪里都無所謂,但如果有后續(xù)其他組件的學(xué)習(xí),對(duì)用戶和目錄的選擇都是有影響的)的目錄,在conf目錄下新建zoo.cfg文件,加入上圖中的三個(gè)參數(shù),其中要注意的是dataDir指向的目錄要事先存在,然后在bin目錄下使用zkServer.sh start命令啟動(dòng)zk。
進(jìn)入命令行客戶端,測(cè)試命令:

命令行客戶端使用完之后,可以使用Java客戶端,這就涉及到編程,以及使用命令對(duì)應(yīng)的API了。

打開Programmer's Guide


zk的數(shù)據(jù)模型
ZooKeeper包含一個(gè)分層次的命名空間,很像分布式的文件系統(tǒng). 唯一的不同是除了包含子節(jié)點(diǎn)外,命名空間的每個(gè)節(jié)點(diǎn)還可以關(guān)聯(lián)數(shù)據(jù)。就像一個(gè)擴(kuò)展的文件系統(tǒng)一樣, 文件也可以是目錄.。節(jié)點(diǎn)的路徑(path)總是規(guī)范的斜線分隔的絕對(duì)路徑;絕沒有相對(duì)路徑.。任意的unicode字符都可以做路徑名, 除了一些限制。

znode節(jié)點(diǎn)
ZooKeeper樹中的每一個(gè)節(jié)點(diǎn)都被稱為znode. Znode維護(hù)一個(gè)stat數(shù)據(jù)結(jié)構(gòu), 包含數(shù)據(jù)變動(dòng)的版本值, acl變動(dòng)等(version numbers for data changes, acl changes)。 stat數(shù)據(jù)結(jié)構(gòu)還包含時(shí)間戳(timestamp)。 版本和時(shí)間戳可以允許ZooKeeper校驗(yàn)緩存和協(xié)同更新。每次znode的數(shù)據(jù)改變,版本號(hào)都會(huì)增加。
Note: 在分布式應(yīng)用工程學(xué)上,單詞node 可以指一個(gè)通用的主機(jī),服務(wù)器, 集群中的一員, 一個(gè)客戶端進(jìn)程等。 而在ZooKeeper文檔中,znode指數(shù)據(jù)節(jié)點(diǎn),Server指提供ZooKeeper服務(wù)器的機(jī)器; quorum peers 指ZooKeeper集群中的服務(wù)器; client 指任何使用ZooKeeper的主機(jī)或者進(jìn)程.
Znode是程序訪問的主要對(duì)象,它們有以下幾個(gè)特征值得一說。

- 監(jiān)視Watches
- 數(shù)據(jù)訪問Data Access
- 臨時(shí)節(jié)點(diǎn)Ephemeral Nodes
- 順序節(jié)點(diǎn)Sequence Nodes -- Unique Naming
從單機(jī)模式直觀的了解zk,使用命令行客戶端敲幾個(gè)命令,大概了解了解。然后配置集群,讀API,用eclipse開發(fā)JAVA客戶端,使用API做幾個(gè)demo。在弄清了常用的API之后,就找?guī)讉€(gè)具體的場(chǎng)景應(yīng)用zk做幾個(gè)實(shí)戰(zhàn)的小項(xiàng)目。之后就可以反過來理解官網(wǎng)上的這段話:

這樣才算是真切的學(xué)習(xí)了zookeeper。
關(guān)于在Windows上用eclipse開發(fā),首先說一個(gè)小問題,貌似有不少人苦惱eclipse中文字體大小修改問題,默認(rèn)的eclipse中文字體很小,和英文字體大小完全不在一個(gè)調(diào)子上,因?yàn)槟J(rèn)的eclipse juno中英文字體是Consolas,字體大小是10,但是大家會(huì)發(fā)現(xiàn),如果代碼中有中文,那中文的字體會(huì)比英文的字體小很多,明顯的,默認(rèn)的eclipse juno中英文字體比中文字體大很多,顯得中文很模糊。
解決辦法:先調(diào)到小5,再調(diào)到小四就正常了。
步驟如下:Window –> Preferences –> General –> Appearance –> Colors and Fonts,在“Colors and Fonts”中選擇“Basic”–>”Text Font”,然后點(diǎn)“Edit”,把“大小”里面的值編輯成“小五”即可。然后再次調(diào)整到你想要的字號(hào)就會(huì)發(fā)現(xiàn)中英文一般大了。