【ZooKeeper】- 数据结构

        ZooKeeper是一个与Unix文件系统很类似的结构,如下图,名称是由斜线(/)分隔得一系列路径,ZooKeeper的每一个节点都有一个路径标识。

         这棵树由节点组成,每个节点称为ZNode。ZNode引用方式是路径引用,比如/app1/p_1,这样的层级结构让每个ZNode都有唯一的路径。

1)ZNode组成:

      每个ZNode兼具文件和目录的特点,既像文件一样维护着数据、元信息、ACL(Access Control List,访问控制列表)、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。

    每个ZNode节点由4部分组成:

      

      data:

          存储数据信息。

      ACL:

          记录ZNode的访问权限,那些可以访问该节点。

      stat:

           ZNode的元数据,比如事务ID,时间戳,版本号,大小等。

      child:

           当前节点子节点的引用。

2)ZNode类型:

     ZooKeeper节点有两种,分为永久节点(Persistent Node)和临时节点(Ephemeral Node)(Ephemeral Node)。节点的类型在创建的时即被确定,不可更改。

     两种节点的区别在于是否依赖会话(session)而生存。客户端和ZooKeeper服务器的一次连接称为一次会话。客户端靠与服务器建立一个TCP的长连接来维持一个会话,客户端在启动的时候首先会与服务器建立一个TCP连接,通过这个连接客户端能够通过心跳检测与服务器保持有效的会话,也能向ZooKeeper服务器发送请求并获得响应。

(1)临时节点:该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时节点将被自动删除,当然也可以手动删除。虽然每个临时的Znode都会绑定到一个客户端会话,但他们对所有的客户端还是可见的。另外,ZooKeeper的临时节点不允许拥有子节点。

(2)永久节点:该节点的生命周期不依赖于会话,并且只有在客户端显式地执行删除操作的时候,他们才能被删除。

 

当创建Znode的时候,用户可以请求在ZooKeeper的路径结尾添加一个递增的计数。这个计数对于此节点的父节点来说是唯一的,当客户端请求创建这个节点A后,ZooKeeper会根据父节点的zxid状态,为这个A节点编写一个全目录唯一的编号(这个编号只会一直增长)。这样的节点称为顺序节点。

节点细分可以分为四种:

      1)永久节点

      2)永久顺序节点

      3)临时节点

     4)临时顺序节点

 

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值