阅读 135

ZooKeeper文件系统+监听通知

ZooKeeper文件系统+监听通知

ZooKeeper简介

ZooKeeper 是一个开源的分布式协调框架,它的定位是为分布式应用提供一致性服务,是整个大数据体系的管理员。ZooKeeper 会封装好复杂易出错的关键服务,将高效、稳定、易用的服务提供给用户使用。
ZooKeeper = 文件系统 + 监听通知机制

1. 文件系统

Zookeeper维护一个类似文件系统的树状数据结构,节点和文件系统目录一样,不过它可以存储数据,每个节点的存放数据上限为1M,
默认有4中类型的节点:

  • PERSISTENT:持久化目录节点,客户端与zookeeper断开连接后,该节点依旧存在。

  • PERSISTENT_SEQUENTIAL:持久化顺序编号目录节点,客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号。

  • EPHEMERAL:临时目录节点,客户端与zookeeper断开连接后,该节点被删除。

  • EPHEMERAL_SEQUENTIAL:临时顺序编号目录节点,客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号。

2. 监听通知机制

可以对节点绑定监听事件,比如可以监听节点数据变更、节点删除、子节点状态变更等事件,通过这个事件机制,可以基于 Zookeeper 实现分布式锁、集群管理等功能
ZooKeeper 的 Watcher 机制

  1. 客户端注册 Watcher,注册 watcher 有 3 种方式,getData、exists、getChildren。

  2. 服务器处理 Watcher。

  3. 客户端回调 Watcher客户端。

ZooKeeper的监听流程

  1. 首先要有一个main()线程

  2. 在main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener)。

  3. 通过connect线程将注册的监听事件发送给Zookeeper。

  4. 在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。

  5. Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程。

  6. listener线程内部调用了process()方法。


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐