<a href="http://my.oschina.net/pingpangkuangmo/blog/484955">zookeeper源碼研究系列(1)源碼環境搭建</a>
<a href="http://my.oschina.net/pingpangkuangmo/blog/486780">zookeeper源碼研究系列(2)用戶端建立連接配接過程分析</a>
<a href="http://my.oschina.net/pingpangkuangmo/blog/491673">zookeeper源碼研究系列(3)單機版伺服器介紹</a>
<a href="http://my.oschina.net/pingpangkuangmo/blog/495311">zookeeper源碼研究系列(4)叢集版伺服器介紹</a>
先看下大體的代碼格式:

首先標明一個分支,我自己選擇branch-3.4分支來進行源碼研究。即
上述源碼還不是eclipse工程。需要使用ant eclipse指令來轉換成eclipse工程。ant就不用再說了,自行網上搜尋與配置。
這裡來重點說說ant eclipse執行失敗的問題。
1 上述指令會下載下傳ant-eclipse-1.0.bin.tar.bz2檔案,老是下載下傳不成功,無法繼續下去
修改源碼中build.xml中的配置,将位址
更換成如下位址
2 還發現缺少依賴包 commons-collections
在ivy.xml檔案中加入如下配置
<dependency org="commons-collections" name="commons-collections" rev="3.0"/>
上述兩個問題解決後,再重新執行ant eclipse指令。
将eclipse的編譯器版本設定為1.7。然後整個世界就安靜了,終于不再報錯了。下面就是要看看如何在eclipse中運作
我們首先看下單機版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指定的路徑。然後把該配置檔案的路徑作為參數
至此完成了zookeeper的源碼環境搭建,可以随意修改和debug了。下一篇文章就會介紹下用戶端和伺服器端的互動過程。