Zookeeper的节点znode

分布式锁机制组成了一个重要的原语,同时暴露出创建(create),获取(acquire)和释放(release)三个调用方法。这种设计存在一些重大的缺陷:首先,我们要么预先提出一份详尽的原语列表,要么提供API的扩展,以便引入新的原语;其次,以这种方式实现原语的服务使得应用丧失了灵活性。

Zookeeper并不直接暴露原因,取而代之,它暴露了由小部分方法组成的类似文件系统是API,以便允许应用实现自己的原语。通常使用菜谱(recipes)来表示这些原语的实现。

菜谱包括Zookeeper操作和维护一个小型的数据节点。这些节点被称为znode,采用类似于文件系统的层次树状结构进行管理。


znode可能含有数据也可能没有。如果一个znode节点包含任何数据,那么数据存储为字节数组(byte array)

znode的不同类型

当新建znode时,还需要指定该节点的类型mode ,不同的类型决定了znode节点的行为方式。

持久节点和临时节点

1:持久节点,如/path,只能通过调用delete来进行删除。临时节点的znode当创建该节点的客户端崩溃或关闭了与zookeeper的连接时,这个节点就会被删除。

2:持久节点可以通过持久类型的znode为应用保存一些数据,及时znode的创建者不在属于应用系统时,数据也可以保存下来而不丢失。

一个临时节点znode,在一下两种情况会被删除:

1:当创建该znode的客户端的会话因超时或主动关闭而终止时

2:当某个客户端(不一定是创建者)主动删除节点时

有序节点

一个有序节点被分配唯一一个单调递增的整数。当创建有序节点时,一个序号会被追加到路径之后。

总之,znode一共有4种类型:持久的(persistent)、临时的(ephemeral)、持久有序的(persistent_sequential)和临时有序的(ephemral_sequential)


版本

每一个znode都有一个版本号,它随着每次数据变化而自增。两个API操作可以有条件地执行:setDate和delete。

这两个调用以版本号作为转入参数,只有当转入的参数的版本号与服务器上的版本号一致时调用才会成功。










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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值