配置中心
发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。
分布式通知/协调
心跳检测:检测系统和被检测系统之间并不直接关联起来,而是通过zk上某个节点关联。
系统调度:某系统有控制台和推送系统两部分组成,控制台的职责是控制推送系统进行相应的推送工作。控制台修改ZK上某些节点的状态,ZK就把这些变化通知给他们注册Watcher的客户端,即推送系统。 能大大降低系统之间的耦合
Master选举
在分布式环境中,有些业务逻辑只需要让某一台机器执行。
方法1:同时有多个客户端请求创建 /currentMaster 节点,最终一定只有一个客户端请求能够创建成功。
方法2:用到EPHEMERAL_SEQUENTIAL节点。
/currentMaster/{sessionId}-1 ,/currentMaster/{sessionId}-2 ,/currentMaster/{sessionId}-3 ….. 每次选取序列号最小的那个机器作为Master
分布式锁
分布式锁主要用于在分布式环境中保证数据的一致性。 包括跨进程、跨机器、跨网络导致共享资源不一致的问题。
- 分布式锁的实现思路
说明:
这种实现会有一个缺点,即当有很多进程在等待锁的时候,在释放锁的时候会有很多进程就过来争夺锁,这种现象称为 “惊群效应”
- 分布式锁优化后的实现思路
分布式队列
先进先出队列,原理同分布式锁 等到队列成员聚齐,比如:一个任务需要n个子任务完成才能继续。 可以给/queue赋值n,表示队列大小,等n个都到了再执行。