#1 系列目錄git
#2 搭建步驟github
##2.1 到github中fork該項目apache
項目地址 https://github.com/apache/zookeeper。fork完成以後就存至本身的倉庫中了。服務器
##2.2 clone上述本身的倉庫地址到本地session
先看下大致的代碼格式:eclipse
##2.3 使用ant對源碼編譯成eclipse工程ui
首先選定一個分支,我本身選擇branch-3.4分支來進行源碼研究。即this
git checkout branch-3.4
上述源碼還不是eclipse工程。須要使用ant eclipse命令來轉換成eclipse工程。ant就不用再說了,自行網上搜索與配置。.net
ant eclipse
這裏來重點說說ant eclipse執行失敗的問題。debug
1 上述命令會下載ant-eclipse-1.0.bin.tar.bz2文件,總是下載不成功,沒法繼續下去
修改源碼中build.xml中的配置,將地址
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"
2 還發現缺乏依賴包 commons-collections
在ivy.xml文件中加入以下配置
<dependency org="commons-collections" name="commons-collections" rev="3.0"/>
上述兩個問題解決後,再從新執行ant eclipse命令。
##2.4 導入項目到eclipse工程中
將eclipse的編譯器版本設置爲1.7。而後整個世界就安靜了,終於再也不報錯了。下面就是要看看如何在eclipse中運行
#3 運行ZooKeeper
咱們首先看下單機版ZooKeeper的啓動類org.apache.zookeeper.server.ZooKeeperServerMain。
它的啓動參數有兩種狀況:
狀況1:直接給出相應的參數設置。
有4個參數,前兩個參數必填,後兩個參數可選
對客戶端暴漏出的端口port,dataDir的目錄,tickTime值,maxClientCnxns值(最大的客戶端鏈接數)。下面分別來簡單介紹下:
對客戶端暴漏出的端口port,即以下客戶端代碼指定的端口
new ZooKeeper("192.168.126.130:2181",5000,this)
dataDir的目錄
ZooKeeper有兩類數據要存儲。一種就是事務記錄,另外一種就是ZooKeeper的內存樹中的數據,以快照方式存儲。 因此能夠給這兩種數據指定不一樣的目錄。dataDir用來指定內存樹快照的存儲位置,dataLogDir用來指定事務記錄的存儲位置。只給出了dataDir的目錄,則表明兩種數據都存儲在該目錄下。
tickTime值,單位ms,默認3000
用途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。源碼以下:
。
maxClientCnxns值,用於指定服務器端最大的鏈接數。
參數說完了,咱們就來設置一下:
同時,ZooKeeper採用log4j來做爲日誌輸出,因此須要將log4j的配置文件(在conf文件夾中)放置到類路徑下。
因此該項目右鍵,Build Path-》Add Class Folder 添加conf文件夾做爲類路徑的一部分。
而後就能夠Run了。
狀況2:給出配置文件地址
當org.apache.zookeeper.server.ZooKeeperServerMain類的啓動參數只有一個時,則表明着配置文件的路徑。
也能夠修改conf文件夾中的zoo_sample.cfg配置文件,修改下dataDir指定的路徑。而後把該配置文件的路徑做爲參數
#4 結束語
至此完成了ZooKeeper的源碼環境搭建,能夠隨意修改和debug了。下一篇文章就會介紹下客戶端和服務器端的交互過程。