虽然参照源码和网上的一些文章了解了zookeeper,但是有些概念和详解还需记录一下
1.zoo.cfg
dataDir // 存储内存数据库快照地址
dataLogDir // 更新内存数据库事务日志的地址
clientPort // 客户端连接的端口
clientPortAddress //客户端地址名称
tickTime //每次发送心跳包时间(默认为3000)
maxClientCnxns //客户端连接最大数量
minSessionTimeout //默认为-1
maxSessionTimeout //默认为-1
initLimit // 限制同步期间心跳包的初始数量
syncLimit // 限制从发送请求到确认请求时间内的心跳包数量,即客户端连接服务器的超时时间是(syncLimit*tickTime)
electionAlg //选举算法(默认为3是 FastLeaderElection)
quorumListenOnAllIPs //是否监听所有ip的端口,默认为false(只绑定server下的选举端口的ip)
peerType //服务器类型(observer/participant),observer不参与投票,如果和server里的配置不一样则server里的有效
syncEnabled //默认为true
autopurge.snapRetainCount //自动清洗dataDir,dataLogDir目录后保存的快照数据数量(默认最低为3)
autopurge.purgeInterval //自动清洗频率(单位为小时,默认为0)
server //quorumServer服务器列表,可以有三种配置(zoo1:2888或zoo1:2888:3888或zoo1:2888:3888:participant),zoo1:2888配置只有当electionAlg=0才有效
例:
server.1=zoo1:2888:3888:participant
server.2=zoo2:2888:3888:observer
server.3=zoo3:2888:3888:participant
group //机器分组,等号后面的1,2,3,4,5,6,7,8,9是sid
例:
group.1=1:2:3
group.2=4:5:6
group.3=7:8:9
weight //机器权重,没有配置的机器默认权重为1
例:
weight.1=1
weight.2=1
weight.3=1
其他的通过System.setProperty("zookeeper." + key, value);放到系统变量里去了。
注意:当没有配置group时,Leader选举成功是通过QuorumMaj(即超过半数票就是Leader)实现的;
否则则是通过QuorumHierarchical实现的
- 选举的一些概念