Zookeeper应用场景

Zookeeper常用应用场景

统一命名服务

统一命名可以理解为,我们将一部分资源放在同一节点下,以方便管理和取数据。

在这里插入图片描述

如type 1 是一个域名,下面可以存储域名对应多台机器的ip地址。

统一配置管理

在分布式环境中,一般所有节点的配置信息是一致的,比如 Kafka 集群,当配置文件修改时,我们希望它快速同步到所有节点上。

所以,可以通过zookeeper实现。

  1. 将配置信息写到一个zookeeper的一个znode上。
  2. 所有用到该配置的客户端都去监听这个znode。
  3. 一旦znode中的数据被修改,触发事件,异步回调通知各个客户端。

在这里插入图片描述

负载均衡

  1. 服务器在启动的时候向zookeeper上注册自己信息,采用临时节点的方式(一旦关闭连接,该节点自动删除)。

  2. 客户端从zookeeper上获取最新的节点信息,本地实现负载均衡算法去分配服务器。

在这里插入图片描述

监听服务器动态上下线

在这里插入图片描述

  1. 服务器启动时,向zookeeper的某个znode下写入自己的信息(临时节点)。
  2. 客户端getChildren,获取服务器列表,并监听znode。
  3. 一旦服务器节点下线(如图中server_2),客户端会立刻接到下线通知。

分布式锁

分布式锁用于控制分布式系统之间同步访问共享资源的一种方式,为了保证不同系统访问一个或一组资源时的一致性。

在这里插入图片描述

  1. 各个客户端访问 /lock 节点,访问时创建一个带序列的临时节点(EPHEMERAL_SEQUENTIAL),序列会根据创建顺序依次递增。
  2. 所有客户端拿到 /lock 下的所有子节点并排序,判断自己是否是最小的那个。
    1. 如果是,则拿到锁,拿到锁的客户端执行业务操作,结束后断开连接,临时节点自动删除,也就释放了锁。
    2. 如果不是,拿锁失败,然后将子节点排序,并监听节点比自己小1的节点是否被删除。
  3. 当监听的节点被删除会通知监听它的客户端,当客户端收到回调信息以后,再排序判断自己是否是第一个,如果是拿到锁。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像鸟一样菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值