Zookeeper 基本应用及盲点

主要应用

From:

https://segmentfault.com/a/1190000012185452

http://blog.fens.me/zookeeper-queue/

原理: 应用zookeeper的持久化节点PERSISTENT、临时节点(断线即自动删除)、序列化节点名SEQUENTIAL、watch等特性

master选举:

在zk某个指定目录下创建一个临时节点,并写入基本信息,成功的则是master,其他做为slave,所有的slave必须watch master节点,在删除时得到通知,开始选主

分布式锁:

在特定目录下创建临时序列节点,获取该节点下所有children,按照节点自增号排序,如果自己是最小的,则得到锁,否则就监听次小序号节点的删除事件。

分布式队列:

当队列填满时才通知消费者来消费

要创建queue_100

/queue入队操作就是在该目录下创建节点,当达到预定数目100时,创建/queue/start消费者通过监听该目录,得到通知后来消费,使用完后删除/queue下对应节点

分布式序列号:

利用序列号


容错:

Quorums 存活的服务器数量大于宕机的服务器数量,则可以继续使用。

假死、脑裂:

心跳不通,导致某节点假死,然后watch的节点发现master死了开始选主,选好后网络又通了,就产生了两个master节点

ZK中的解决方法:

假设某个leader假死,其余followers选举出了一个新learder,这是旧leader复活以为自己仍然是leader,向其他followers发出写请求也是会被拒绝。因为每当新leader产生时,会生成一个epoch,该epoch递增,followers如果确认了新的Leader存在,知道其epoch,就会拒绝epoch小于现任leader epoch的所有请求。

原文地址:https://www.cnblogs.com/it-worker365/p/9304528.html