Zookeeper技术问答系列-NO8

96 篇文章 0 订阅
38 篇文章 0 订阅

一.ZooKeeper集群支持动态添加机器吗?

ZooKeeper集群支持动态添加机器,这实际上是一种水平扩容的方式。ZooKeeper从3.5版本开始支持动态扩容。

动态添加机器有两种主要方式:全部重启和逐个重启。全部重启需要关闭所有ZooKeeper服务,修改配置之后重新启动,这种方式不会影响之前客户端的会话。而逐个重启则是在过半存活即可用的原则下,一台机器重启不会影响整个集群对外提供服务,这是比较常用的方式。

在添加新机器时,需要在新机器上安装ZooKeeper,并确保非集群相关的配置与之前的集群机器相一致。然后,可以通过ZooKeeper提供的工具或API进行动态添加操作。

二.ZooKeeper对节点的watch监听通知是永久的吗?为什么不是永久的?

ZooKeeper对节点的watch监听通知不是永久的。

这种设计主要是出于以下几个方面的考虑:

  1. 一次性触发:Watch机制的主要目标是提供事件的即时通知。一旦某个watch被触发(例如,当节点数据改变或节点被删除时),ZooKeeper会发送通知给相应的客户端,并立即移除该watch。这样做可以确保每个watch只处理一次事件,避免了重复处理相同事件所带来的复杂性。
  2. 避免资源泄漏:如果watch是永久性的,那么在节点频繁变化的情况下,可能会导致大量的watch积压,进而消耗大量的系统资源。一次性的watch机制可以避免这种情况的发生,因为它在通知客户端之后会自动被移除。
  3. 实现简单性:一次性的watch机制使得ZooKeeper的实现和维护更加简单。系统不需要持续追踪和管理各个节点的监听状态,这有助于提高系统的可靠性和性能。

在实际应用中,很多时候客户端并不需要知道服务端的每一次变动,而只需要获取最新的数据即可。因此,ZooKeeper的这种设计更符合实际的应用需求。

如果需要持续监听节点的变化,客户端可以在接收到watch事件通知后,再次对节点设置watch,从而实现类似永久监听的效果。但需要注意的是,这种方式仍然依赖于每次事件触发后的重新设置,而不是真正的永久监听。

三.ZooKeeper的Java客户端有哪些?

ZooKeeper的Java客户端主要有以下几种:

  1. ZooKeeper原生的Java API:ZooKeeper官方提供了原生的Java API,它提供了创建会话、创建节点、读取节点、更新数据、删除节点和检查节点是否存在等基本操作。然而,这个原生API有一些不足之处,例如没有实现会话超时后的重连机制,Watcher注册是一次性的,不支持递归创建节点,异常处理繁琐,只提供了简单的byte[]数组接口,没有提供针对对象级别的序列化,以及创建和删除节点时的一些限制。
  2. Curator:Curator是Apache的一个开源项目,它是对ZooKeeper原生客户端API的封装,提供了更高层次的抽象和许多实用的特性,比如重试机制、连接管理、分布式锁、分布式计数器等。Curator大大简化了ZooKeeper的使用,并提供了更强大和灵活的功能。
  3. zkClient:zkClient是另一个常用的ZooKeeper Java客户端,它同样对ZooKeeper的API进行了封装,使得使用更加方便。zkClient提供了一些便捷的功能,比如自动重连、节点监听等。

在选择ZooKeeper的Java客户端时,需要根据具体的项目需求、团队的技术栈以及对ZooKeeper的熟悉程度进行综合考虑。对于初学者来说,直接使用ZooKeeper的原生API可能会比较困难,而Curator和zkClient等封装过的客户端则提供了更友好的接口和更强大的功能,可以更快地上手和进行开发。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

纵然间

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

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

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

打赏作者

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

抵扣说明:

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

余额充值