天天看點

ZooKeeper源碼研究系列(1)源碼環境搭建1 系列目錄2 搭建步驟3 運作ZooKeeper4 結束語

<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>

先看下大體的代碼格式:

ZooKeeper源碼研究系列(1)源碼環境搭建1 系列目錄2 搭建步驟3 運作ZooKeeper4 結束語

首先標明一個分支,我自己選擇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檔案中加入如下配置

&lt;dependency org="commons-collections" name="commons-collections" rev="3.0"/&gt;

上述兩個問題解決後,再重新執行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。源碼如下:

ZooKeeper源碼研究系列(1)源碼環境搭建1 系列目錄2 搭建步驟3 運作ZooKeeper4 結束語

maxclientcnxns值,用于指定伺服器端最大的連接配接數。

參數說完了,我們就來設定一下:

ZooKeeper源碼研究系列(1)源碼環境搭建1 系列目錄2 搭建步驟3 運作ZooKeeper4 結束語

同時,zookeeper采用log4j來作為日志輸出,是以需要将log4j的配置檔案(在conf檔案夾中)放置到類路徑下。

是以該項目右鍵,build path-》add class folder 添加conf檔案夾作為類路徑的一部分。

然後就可以run了。

情況2:給出配置檔案位址

當org.apache.zookeeper.server.zookeeperservermain類的啟動參數隻有一個時,則代表着配置檔案的路徑。

也可以修改conf檔案夾中的zoo_sample.cfg配置檔案,修改下datadir指定的路徑。然後把該配置檔案的路徑作為參數

ZooKeeper源碼研究系列(1)源碼環境搭建1 系列目錄2 搭建步驟3 運作ZooKeeper4 結束語

至此完成了zookeeper的源碼環境搭建,可以随意修改和debug了。下一篇文章就會介紹下用戶端和伺服器端的互動過程。

繼續閱讀