zookeeper 的使用场景

1.分布式协调
2.分布式锁
3.元数据或配置信息的管理
4.HA高可用性,负载均衡

分布式协调

ZooKeeper 中特有watcher注册与异步通知机制,能够很好的实现分布式环境下不同系统之间的通知与协调,实现对数据变更的实时处理。使用方法通常是不同系统都对 ZK上同一个znode进行注册,监听znode的变化(包括znode本身内容及子节点的),其中一个系统update了znode,那么另一个系统能 够收到通知,并作出相应处理。
 比如 你 A 系统发送个请求到 mq,然后 B 系统消息消费之后处理了。那 A 系统如何知道 B 系统的处理结果?用 zookeeper 就可以实现分布式系统之间的协调工作。A 系统发送请求之后可以在 zookeeper 上对某个节点的值注册个监听器,一旦 B 系统处理完了就修改 zookeeper 那个节点的值,A 系统立马就可以收到通知,完美解决。

分布式锁

zookeeper是以树形结构的方式存储数据,每个节点不能重复,zookeeper里面有四种节点,两大类节点,持久节点和临时节点。持久节点是存放到本地里,连接断了也存在,但是临时节点如果zk的连接断掉以后。临时节点则不会存在,正是因为这种特性,我们可以使用zk的临时节点来作为锁。

有A,B两个连接操作数据,A连接先去创建节点,如果能创建节点成功,表示获取了锁可以操作数据,此时如果B连接在来创建节点,根据zk存储特性,节点名字不能有重复,此时B连接是无法创建节点成功,所以处于等待状态。等待A连接处理完数据以后,断开连接,临时节点断开连接以后该节点就消失(释放锁),此时B 就可以在创建节点(获取锁),B处理完以后断开连接(释放锁)。所以zk作为锁的原理是,临时节点创建成功(获取锁),断开连接(释放锁).

元数据或配置信息的管理 数据发布/订阅

数据存储:将数据(配置信息)存储到Zookeeper上的一个数据节点
数据获取:应用在启动初始化节点从Zookeeper数据节点读取数据,并在该节点上注册一个数据变更Watcher
数据变更:当变更数据时,更新Zookeeper对应节点数据,Zookeeper会将数据变更通知发到各客户端,客户端接到通知后重新读取变更后的数据即可。

程序分布式的部署在不同的机器上,将程序的配置信息放在zk的znode下,当有配置发生改变时,也就是znode发生变化时,可以通过改变zk中某个目录节点的内容,利用watcher通知给各个客户端,从而更改配置

负载均衡

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值