zookeeper-5.使用场景

634 阅读2分钟

配置中心

发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。

分布式通知/协调

心跳检测:检测系统和被检测系统之间并不直接关联起来,而是通过zk上某个节点关联。

系统调度:某系统有控制台和推送系统两部分组成,控制台的职责是控制推送系统进行相应的推送工作。控制台修改ZK上某些节点的状态,ZK就把这些变化通知给他们注册Watcher的客户端,即推送系统。 能大大降低系统之间的耦合

Master选举

在分布式环境中,有些业务逻辑只需要让某一台机器执行。

方法1:同时有多个客户端请求创建 /currentMaster 节点,最终一定只有一个客户端请求能够创建成功。

方法2:用到EPHEMERAL_SEQUENTIAL节点。

/currentMaster/{sessionId}-1 ,/currentMaster/{sessionId}-2 ,/currentMaster/{sessionId}-3 ….. 每次选取序列号最小的那个机器作为Master

分布式锁

分布式锁主要用于在分布式环境中保证数据的一致性。 包括跨进程、跨机器、跨网络导致共享资源不一致的问题。

  1. 分布式锁的实现思路

image.png 说明: 这种实现会有一个缺点,即当有很多进程在等待锁的时候,在释放锁的时候会有很多进程就过来争夺锁,这种现象称为 “惊群效应”

  1. 分布式锁优化后的实现思路

image.png

分布式队列

先进先出队列,原理同分布式锁 等到队列成员聚齐,比如:一个任务需要n个子任务完成才能继续。 可以给/queue赋值n,表示队列大小,等n个都到了再执行。