Zookeeper 特性及应用

参考:

  1. 《从Paxos到Zookeeper分布式一致性原理与实践》 –倪超

注:学习Zookeeper强烈建议读这本书。

Zookeeper 特性

Zookeeper大致有下面几个特性,对Zookeeper的运用也都是运用这些特性解决实际的问题:

  1. 节点类型:

    • 临时节点:客户端和服务端之间的Session过期之后节点会自动消失。
    • 持久节点:创建节点之后,节点就会一直存在,除非手动删除。
    • 临时顺序节点:拥有临时节点的特性,同时会根据创建的顺序给节点添加一个编号(编号作为节点名字的一部分)。
    • 持久顺序节点:拥有持久节点的特性,同时会根据创建的顺序给节点添加一个编号(编号作为节点名字的一部分)。
  2. Watcher机制:节点数据变更注册时,在该节点的Watcher都会被通知。子节点列表变化注册该节点的Watcher也会被通知。

  3. 多个客户端同时创建一个节点,保证只有一个客户端可以创建成功。

  4. 对于有N台服务器组成的集群,保证有小于等于(N/2)-1 台服务器不能提供服务时,集群的数据仍然保持完整。

Zookeeper 应用场景

  1. 分布式系统配置文件动态更新:利用Zookeeper的可靠性,以及Watcher机制。把配置数据保存在Zookeeper的节点下,系统启动的时候,从数据节点读取配置信息,同时在数据节点注册Watcher,之后当配置数据变更的时候系统就会得到通知,从而实现配置参数动态变更。

  2. 分布式系统的悲观锁:系统创建同一个临时节点(防止客户端出现网络问题,或者客户端断开后节点一直存在,而导致死锁问题),创建成功的获取锁,任务执行完成之后删除节点,创建不成功的监听父节点列表变更事件,收到变更通知之后重新尝试创建。

  3. 分布式队列:

    1. 系统在父节点下创建临时顺序节点。
    2. 获取父节点的子节点列表。如果创建的节点是最小节点,则执行业务逻辑。如果创建的节点不是最小的节点,则监听创建节点前面那一个节点的变更事件。
    3. 收到通知之后重复步骤2。
  4. 全局唯一ID,假设业务模块为 job

    1. 需要Id的时候就在节点下创建 job- 的顺序子节点,然后会返回带包含编号的节点名字,这个名字就可以作为一个Id使用。
    原文作者:田野里的蒲公英
    原文地址: https://www.jianshu.com/p/df9a3717cb73
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞