Zookeeper数据模型及作用

数据模型

  1. 树形结构

  2. 每个节点是ZNode: Zookeeper数据模型中的数据单元,称作数据节点(ZNode),有持久性节点和临时性节点
    持久性节点:一旦这个ZNode创建成功除非主动移除,节点会一直保存在Zookeeper上
    临时节点:是与客户端会话相关联的,一旦客户端会话失效,这个会话上的所有临时节点会被自动移除,不允许有子节点

    每个ZNode节点维护一个叫做stat的数据结构,Stat中维护了节点相关的三个版本:
    当前ZNode的版本 version,每当节点数据发生变化时版本号会累加
    当前ZNode子节点的版本 cversion
    当前ZNode的ACL(Access Control Lists)(访问控制列表)版本aversion
    监听器 Watcher (zookeeper允许用户在指定节点上注册一些Watcher,在一些特定事件触发的时候,zk会通过事件通知到感兴趣的客户端上)

    删除或修改过时的节点,版本号不匹配会报错

  3. 每个ZNode节点存储的数据不宜过大(几k即可)

  4. 每个节点可以设置权限acl,通过权限来限制用户的访问
    ACL(Access Control Lists):zookeeper中定义了五种控制权限
    CREATE:创建当前节点的子节点
    READ:获取节点数据和子节点列表
    WRITE:更新节点数据
    DELETE:删除子节点的权限
    ADMIN:设置节点ACL的权限。
    其中CREATE和DELETE这两种权限都是针对子节点的权限控制。

zk的作用

  1. master节点选举,主节点挂了之后,从节点接手工作,并保证这个节点是唯一的,保证集群是高可用的
  2. 统一配置文件管理,只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有服务器
  3. 发布于订阅 ,类似消息队列,生产者把数据储存在ZNode上,订阅者会读取这个数据
  4. 提供分布式锁,分布式环境中不同进程之间争夺资源,类似于多线程中的锁
  5. 集群管理,集群中保证数据的强一致性, 集群中 一个节点修改了数据 同步到其他服务器中

你可能感兴趣的:(Zookeeper数据模型及作用)