9.zookeeper原理解析-選舉之QuorumPeerMain加載

=====================================斬秋|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=======================================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章