【zookeeper】--数据结构

ZooKeeper提供的名称空间非常类似于标准文件系统。名称是由斜线(/)分隔的一系列路径元素。ZooKeeper名称空间中的每个节点都由一个路径标识。


    树是由节点所组成,zookeeper的数据存储也同样是基于节点,这个节点叫做Znode.但是,不同于树的节点,Znode的引用方式是路径引用,类似于文件路径:/app1/p_1

  这样的层级结构,让每一个Znode节点拥有唯一的路径,就像命名空间一样对不同信息作出清晰的隔离。

ZooKeeper中节点和临时节点

ZooKeeper的节点是通过像树一样的结构来进行维护的,并且每一个节点通过路径来标示以及访问。除此之外,每一个节点还拥有自身的一些信息,包括:数据、数据长度、创建时间、修改时间等等。从这样一类既含有数据,又作为路径表标示的节点的特点中,可以看出,ZooKeeper的节点既可以被看做是一个文件,又可以被看做是一个目录,它同时具有二者的特点。为了便于表达,今后我们将使用Znode来表示所讨论的ZooKeeper节点。

具体地说,Znode维护着数据、ACL(access control list,访问控制列表)、时间戳等交换版本号等数据结构,它通过对这些数据的管理来让缓存生效并且令协调更新。每当Znode中的数据更新后它所维护的版本号将增加,这非常类似于数据库中计数器时间戳的操作方式。

另外Znode还具有原子性操作的特点:命名空间中,每一个Znode的数据将被原子地读写。读操作将读取与Znode相关的所有数据,写操作将替换掉所有的数据。除此之外,每一个节点都有一个访问控制列表,这个访问控制列表规定了用户操作的权限。

ZooKeeper中同样存在临时节点。这些节点与session同时存在,当session生命周期结束,这些临时节点也将被删除。临时节点在某些场合也发挥着非常重要的作用。


Znode:

  znode包含了数据、子节点引用、访问权限等等。


data:
   Znode存储的数据信息。

ACL:
   记录Znode的访问权限,即哪些人或哪些IP可以访问本节点。

stat:
包含Znode的各种元数据,比如事务ID、版本号、时间戳、大小等等。

child:
    当前节点的子节点引用,类似于二叉树的左孩子右孩子。

这里需要注意一点,Zookeeper是为读多写少的场景所设计。Znode并不是用来存储大规模业务数据,而是用于存储少量的状态和配置信息,每个节点的数据最大不能超过1MB。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Apache ZooKeeper 是一个开源的分布式协调服务,它提供了一个高度可靠的分布式协调系统,用于管理和维护分布式应用程序中的信息。Apache ZooKeeper 使用的是分布式一致性算法,可以将多个节点组织在一起,确保它们之间的状态一致性。 ZooKeeper 提供了一个层次化的命名空间,类似于文件系统的目录结构。每个节点都可以存储一些数据,并且可以监视其他节点的状态变化。应用程序可以使用 ZooKeeper 来注册、发现和协调分布式任务。 Apache ZooKeeper 的主要特点包括: 1. 高性能:ZooKeeper 是为高吞吐量和低延迟而设计的,可以处理大量的客户端和数据请求。 2. 可靠性:ZooKeeper 使用了分布式一致性协议,可以保证数据的可靠性和一致性。 3. 简单:ZooKeeper 提供了一组简单的原语操作(例如创建、读取、写入和删除节点等),使得开发者可以轻松构建分布式应用程序。 4. 可扩展性:ZooKeeper 的设计可以扩展到数千个节点,并且可以动态地添加或删除节点。 5. 安全性:ZooKeeper 支持访问控制,可以为不同的客户端或角色设置不同的权限。 Apache ZooKeeper 3.5.5 是 ZooKeeper 的一个版本。这个版本可能包括一些新特性、修复了一些 bug,并且提供了更好的性能和可靠性。用户可以根据自己的需求选择适合的 ZooKeeper 版本,以满足他们的分布式协调需求。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值