zookeeper3.3学习笔记5:zookeeper的znode

每个节点在zookeeper中用znode表示。znodes 包含数据变更和acl变更的版本号。znode同样包含时间戳。版本号和时间戳用来帮助zookeeper验证缓存或者协调更新。每次znode数据发生变化都会使版本号增加。例如,每次client接受数据时都会接收到数据的版本号。当client更新或者删除数据时必须给znode提供数据的版本号。如果提供的版本号与实际的版本号不匹配,更新操作会失败。

znode是程序访问的主要实体类。包含如下特性:

Watches 

  clients 可以为znode设置watch。znode发生改变将会触发watch。当一个watch触发,zookeeper会向client发送通知。

 

Data Access

  在namespace中存储在每个znode上的数据发生的读写操作都是原子性的。读一个znode上的全部数据或者替换掉全部数据都是原子性的。每个znode都有一个Access Contron List(ACL)用来约束哪些人可以执行相应操作。

    Zookeeper不是用来做数据库或者存贮大对象的。相反,它只负责协调数据。数据可以来自配置表单、结构化信息等等。这些数据的有一个共同的特点那就是都很小:以Kb为测量单位。Zookeeper的client和server的实现类都会验证znode存储的数据是否小于1M,但是数据应该比平均值小的多。操作大数据将会触发一些消耗时间的额外操作并且影响潜在的操作,因为需要额外的时间在网络和存储介质上转移数据。如果有大数据需要存储,通常的办法是把这些数据存储在专门的大型文件系统上,例如NFS或者HDFS,然后把存储介质的位置存在zookeeper上。

 

Ephemeral Nodes

zookeeper有一种znode是ephemeral nodes。这些znode只在session存在期间有效。当session结束的时候这些ephemeral nodes被删除。所以ephemeral znodes不能有子节点。

 

Sequence Nodes -- Unique Naming

当创建一个znode时候,你也可以要求zookeeper在path的结尾单调递增。计数器对每一个znode来说都是唯一的。计数器使用%010d格式化--例如<path>0000000001。注意:计数器使用一个singed int(4bytes)来存储下一个序列值。所以计数器达到2147483647 后会溢出。

 

原文:http://zookeeper.apache.org/doc/trunk/zookeeperProgrammers.html#sc_zkDataModel_znodes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值