Zookeeper 怎么保证主从节点的状态同步?
讲下Zab协议,原子消息广播和崩溃恢复:
消息广播是2pc阶段提交,
崩溃恢复后如何leader选举,选举的依据是什么
eoch、zxid讲一下
四种类型的数据节点 Znode
临时节点
持久节点
临时有序节点
持久有序节点
Zookeeper Watcher 机制 – 数据变更通知
执行一次就结束
可以监听触发事件,删除啦,修改数据啦
watch的使用:服务端和客户端
ACL权限
zookeeper角色
leader
follower
Observer
Zookeeper 下 Server 工作状态
Looking:选举状态
leading:leader
following:follower
obsering:观察者
zookeeper 是如何保证事务的顺序一致性
zk使用的全局递增的事务id
围绕zxid,高32位是epoch,低32位是顺序递增的id
集群支持动态添加机器吗?
其实就是水平扩容了
3.5 版本开始支持动态扩容
watch为什么不是永久的
如果监听的服务端变动频繁,会不停的同步客户端,造成网络、服务器压力
zookeeper 常用的命令。
create、delete、set、get、is
ZAB协议和Paxos算法
相同点:
1、都有leader角色,协调follow工作
2、都会在半数以上的节点通过后才提交
3、都有一个东西来标志选举周期,zab是epoch、paxos 是 ballot
不同点:
paxos是理论,zab是具体协议
Zookeeper 的典型应用场景
分布式锁
发布/订阅
注册中心