zookeeper遵循AP,追求最终一致性(根据zxid(事务id)记录数据是否过期,所以遵守顺序一致性)
zk在集群时,有三种类型的节点
leader: 可以进行数据的读写
follower: 只能进行读操作,可以参加leader选举
observer: 只能进行读操作,不能进行leader选举
建立集群:
为每个server创建对应的dataDir和dataLogdir
在每个dataDir文件夹中创建一个myid文件,里面写上服务器的唯一标识为每个server编写对应的配置文件zoo.cfg
配置文件内容
tickTime = 2000 dataDir = /opt/apache-zookeeper-3.6.3-bin/datas/zk1 data文件的存放地址,myid文件也在这里存放 clientPort = 2181 initLimit = 20 syncLimit = 2 #server.(每台server的唯一标识(在myid文件中配置))=主机地址:server同步信息,通信端口:选举leader端口:server节点的角色 server.1=192.168.137.128:2001:3001 server.2=192.168.137.128:2002:3002 server.3=192.168.137.128:2003:3003 server.4=192.168.137.128:2004:3004:observerZAB协议
ZAB(zookeeper atomic broadcast)协议,解决了zookeeper的崩溃恢复和主从数据同步的问题
ZAB定义节点的四种状态:
looking 选举状态
following
leading
observing
集群启动时leader的选举过程
崩溃恢复时的leader选举
leader建立完后,leader周期性的向follow发送心跳包,当leader崩溃后,follow进入looking状态,重新回到选举状态
主从复制原理



