#0 系列目錄#git
Zookeeper系列github
Zookeeper源碼ui
Zookeeper應用
#1 搭建步驟# ##1.1 到github中下載該項目## 項目地址 https://github.com/apache/zookeeper。下載.zip包到本地解壓。
解壓後文件目錄:
##1.2 使用ant對源碼編譯成eclipse工程## 上述源碼還不是eclipse工程。須要使用ant eclipse命令來轉換成eclipse工程。ant就不用再說了,自行網上搜索與配置。
cd zookeeper-trunk ant eclipse
這裏來重點說說ant eclipse執行失敗的問題:
get src="http://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2" 更換成以下地址 get src="http://ufpr.dl.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2"
<dependency org="commons-collections" name="commons-collections" rev="3.0"/>
上述兩個問題解決後,再從新執行ant eclipse命令。
##1.3 經過idea導入eclipse工程##
將idea的編譯器版本設置爲1.7。而後整個世界就安靜了,終於再也不報錯了。
#2 運行Zookeeper# 咱們首先看下單機版ZooKeeper的啓動類org.apache.zookeeper.server.ZooKeeperServerMain
,它的啓動參數有兩種狀況:
有4個參數,前兩個參數必填,後兩個參數可選
,對客戶端暴漏出的端口port,dataDir的目錄,tickTime值,maxClientCnxns值(最大的客戶端鏈接數)。下面分別來簡單介紹下:
new ZooKeeper("192.168.126.130:2181",5000,this)
ZooKeeper有兩類數據要存儲。一種就是事務記錄,另外一種就是ZooKeeper的內存樹中的數據,以快照方式存儲
。 因此能夠給這兩種數據指定不一樣的目錄。dataDir用來指定內存樹快照的存儲位置,dataLogDir用來指定事務記錄的存儲位置
。只給出了dataDir的目錄,則表明兩種數據都存儲在該目錄下
。
**用途1:**用於指定session檢查的間隔,服務器會每隔一段時間檢查一次鏈接它的客戶端的session是否過時。該間隔就是tickTime。
**用途2:**用於給出默認的minSessionTimeout和maxSessionTimeout,若是沒有給出maxSessionTimeout和minSessionTimeout(爲-1),則minSessionTimeout和maxSessionTimeout的取值以下:
minSessionTimeout == -1 ? tickTime 2 : minSessionTimeout; maxSessionTimeout == -1 ? tickTime 20 : maxSessionTimeout;
分別是tickTime的2倍和20倍。
客戶端代碼在建立ZooKeeper對象的時候會給出一個sessionTimeout時間
,而上述的minSessionTimeout和maxSessionTimeout就是用來約束客戶端的sessionTimeout。源碼以下:
參數說完了,咱們就來設置一下:
同時,ZooKeeper採用log4j來做爲日誌輸出,因此須要將log4j的配置文件(在conf文件夾中)放置到類路徑下
。
當org.apache.zookeeper.server.ZooKeeperServerMain類的啓動參數只有一個時,則表明着配置文件的路徑
。也能夠修改conf文件夾中的zoo_sample.cfg配置文件,修改下dataDir指定的路徑。而後把該配置文件的路徑做爲參數: