zookeeper集群
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:observer
ZAB协议
ZAB(zookeeper atomic broadcast)协议,解决了zookeeper的崩溃恢复和主从数据同步的问题
ZAB定义节点的四种状态:
looking 选举状态
following
leading
observing
-
集群启动时leader的选举过程
-
崩溃恢复时的leader选举
leader建立完后,leader周期性的向follow发送心跳包,当leader崩溃后,follow进入looking状态,重新回到选举状态
- 主从复制原理