首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

zookeeper原理解析-选举(1)

zookeeper原理解析-选举(1)

1)QuorumPeerMain加载
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()启动任务线程
返回列表