ZooKeeper源碼研究系列(1)源碼環境搭建

#1 系列目錄git

#2 搭建步驟github

##2.1 到github中fork該項目apache

項目地址 https://github.com/apache/zookeeper。fork完成以後就存至本身的倉庫中了。服務器

##2.2 clone上述本身的倉庫地址到本地session

先看下大致的代碼格式:eclipse

ZooKeeper的源碼目錄

##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參數

同時,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了。下一篇文章就會介紹下客戶端和服務器端的交互過程。

相關文章
相關標籤/搜索