ZooKeeper

分布式协调

A 系统发送个请求到 mq,然后 B 消息消费之后处理了。那 A 系统如何知道 B 系统的处理结果?

解决方式:A 系统发送请求之后可以在 zk 上对某个节点的值注册个监听器,一旦 B 系统处理完了就修改 zk 那个节点的值,A 立马就可以收到通知。

分布式锁

  1. 节点 A 尝试创建临时 znode,创建成功则表示获取了这个锁;

  2. 此时节点 B 创建锁会失败,转而注册个监听器监听这个锁。

  3. 节点 A 释放锁就是删除这个 znode,删除后 zk 会通知节点 B,节点 B 可以再次加锁。

元数据/配置信息管理

Kafka、Storm、Dubbo 等很多分布式系统都会选用 zk 来做一些元数据、配置信息的管理。

HA

Hadoop、HDFS、Yarn 等很多大数据系统,都选择基于 zk 来开发 HA 高可用机制。原理:一个重要进程一般会做主备两个,主进程挂了立马通过 zk 感知到切换到备用进程。

Last updated