=====================================斬秋|http://blog.csdn.net/quhongwei_zhanqiu=======================================
Zookeeper集羣啓動的入口類是QuorumPeerMain來加載配置啓動QuorumPeer線程。首先我們來看下QuorumPeer, 谷歌翻譯quorum是法定人數,定額的意思, peer是對等的意思,那麼QuorumPeer中quorum代表的意思就是每個zookeeper集羣啓動的時候集羣中zookeeper服務數量就已經確定了,在每個zookeeper的配置文件中配置集羣中的所有機器
server.1=127.0.0.1:2886:3886
server.2=127.0.0.1:2887:3887
server.3=127.0.0.1:2888:3888
事實上着也確定zookeeper在運行中是不能動態擴容的,必須停下服務修改配置纔可以;QuorumPeer中peer代表就是集中每個zookeeper角色是對等的沒有主從之分,每個zookeeper服務都可以成爲leader, follower,observer。
1. QuorumPeerMain加載
1) QuorumPeerConfig讀取配置文件,如下面的zoo.cfg文件
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/workspace_zookeeper/data1
clientPort=2181
server.1=127.0.0.1:2886:3886
server.2=127.0.0.1:2887:3887
server.3=127.0.0.1:2888:3888
如上配置中每個server.X記錄代表集羣中的一個服務,QuorumPeerConfig會構建一個QuorumServer對象,其中的server.X中的X代表zookpeer的sid,每個zookeeper都會編輯自己的sid在dataDir目下的myid文件中,sid標記每個服務,在快速選舉中起作用
server.X後值代表zookeeper服務地址ip以及選舉其中zookeeper之間連接的端口
2)啓動定時清理服務任務DatadirCleanupManager.start() 用來清除過期的txtLog和snapshot文件
3)構建QuorumPeer任務對象
3.1)設置供客戶端連接的端口地址
3.2)設置txtLog和snapshot的操作對象FileTxnSnaplog
3.3)設置本Zookeeper的myid(sid)
3.4)設置客戶端連接工廠
3.5)設置選舉算法
3.6)各種時間設置等等
4)QuorumPeer.start()啓動任務線程
=====================================斬秋|http://blog.csdn.net/quhongwei_zhanqiu=======================================