ZOOKEEPER

Zookeeper

一、zookeeper有什么用?

分布式协调服务

满足:
一致性
原子性
可靠性
最终一致性

角色与状态

角色
1、leader:领导者
2、follower:追随者,参与选举
3、observer:观察者,不参与选举,主要是用来扩大读的能力

状态:
LOOKING
LEADING
FOLLOWING

二、选举机制

触发选举的场景:
1、启动时
2、Leader掉线
3、Leader与一半以上的follower失联

选举的投票信息:
【SID,ZXID】=【服务器唯一标识,最后一个事务ID】
ZXID事务ID=32位时间戳+32位计算器

三、ZAB协议与paosx协议
四、作用场景
分布式配置

如配置项,类属性,放在节点上,还有类似 application.properties

命名服务:dubbo

将信息放在ZK 上,进行实时修改和读取
ZOOKEEPER_第1张图片

分布式锁:

1、在锁节点下创建临时节点,节点序号会越长越大
2、获取这个锁节点下所有的子节点,(每个子节点代表一个线程在抢占锁)
3、如果这些子节点的最小一个节点序号,和当前创建的序号一致,则认为抢占到了锁,执行业务,然后删除这个临时节点

4、如果没有抢占到,则监听一个比自己这个节点小一号的临时节点(避免羊群效应)

5、如果监听失败,则再次从第2步执行,重新获取所有子节点,看下是不是轮到自己了。
没有则再次监听小一号的临时节点。

分布式队列

1、创建临时节点
2、往节点下创建临时节点,顺序存储,如果满了,则阻塞或终止
3、订阅者,消费最小临时节点,则满足FIFO,执行完成后删除该节点
4、消费最大临时节点,先今后出。
5、如果为空,则阻塞等待

负载均衡

ZOOKEEPER_第2张图片

你可能感兴趣的:(ZOOKEEPER)