四个阶段:
选举:election
发现:discovery
同步:sync
广播:Broadcast
安装:
部署方式:单机模式、伪分布模式、分布式模式
http://zookeeper.apache.org
zoo.cfg配置参数:
tickTime=2000
dataDir=/datazookeeper
ClientPort=2181
initLimit=5
syncLimit=2
指定主机的语法格式:
server.ID=IP:port=2181
ID:各主机的数字表示,一般从1开始
IP:各主机的IP
节点信息:
cZxid = 0x2
ctime = Sat Dec 19 03:30:07 CST 2020
mZxid = 0x2
mtime = Sat Dec 19 03:30:07 CST 2020
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 0
ZKCli命令:
create,ls,ls2,stat,delete,rmr,get,set,...
监控ZK的四字命令:
ruok,stat,srvr,conf,cons,wchs,envi ...
zoo.cfg配置文件的参数:
基本配置参数:
clientPort=2081
dataDir=/data/zookeeper
dataLogDir:事务日志文件路径;
tickTime:
存储配置:
preAllocSize:为事务日志预先分配的磁盘量:默认65535kb
snapCount:每多少次事务后执行一次快照操作,每事务的大小在平均100字节。
autopurget.snpRetainCount:
autopurge.purgeInterval:purge操作的时间间隔,0表示不启动。
fsync.warningthresholdms:zk进行事务日志,fsync操作时消耗的时长报警阀值。
weight.x=N:判断quorum时投票的权限,默认1;
网络配置:
maxClientCnxns:每客户端IP的最大并发连接数
clientportAddress:zk监听IP地址
minsessiontimeout:
maxsessiontimeout:
集群配置:
lnitLimlt:Follower连接Leader并完成数据同步的时长
Synclimlt:心跳检测的最大延迟
leaderservers:默认zk的leader接收读写请求,额外还要负责协调各Follower发来的事务等,因此,为使得leader集中处理zk集群内部信息,建议不让leader直接提供服务。
cnxTimeout:leader选举期间,各服务器创建TCP连接的超时时长。
ellectonAlg:选举算法,目前仅支持FastLeaderElection算法一种。
server.id=[hostname]:port:port[:observer]
集群内各服务器的属性参数
第一个port:follower与leader进行通信和数据同步时所使用的端口;
第二个port:leader选举时使用的端口
observer:定义指定的服务器为observer;
注意:运行为集群模式时,每个节点在其数据目录中应该有一个myid文件,其内容仅为当前server的id;
典型应用场景:
数据发布/订阅
负载均衡
命名服务
分布式协调/通知
集群管理
Master选举