ZooKeeper节点类型

要说zookeeper节点有多少种类型,直接看创建节点的参数就知道了:
org.apache.zookeeper.ZooKeeper#create(java.lang.String, byte[], java.util.List<org.apache.zookeeper.data.ACL>, org.apache.zookeeper.CreateMode)

    public String create(String path, byte[] data, List<ACL> acl, CreateMode createMode) throws KeeperException, InterruptedException {

    }

其中有个参数,org.apache.zookeeper.CreateMode

public enum CreateMode {
    PERSISTENT(0, false, false, false, false),
    PERSISTENT_SEQUENTIAL(2, false, true, false, false),
    EPHEMERAL(1, true, false, false, false),
    EPHEMERAL_SEQUENTIAL(3, true, true, false, false),
    CONTAINER(4, false, false, true, false),
    PERSISTENT_WITH_TTL(5, false, false, false, true),
    PERSISTENT_SEQUENTIAL_WITH_TTL(6, false, true, false, true);
    ......
}

这里有7种类型

PERSISTENT 持久型
创建了就会一直存在,直到被手动调用删除节点方法。

PERSISTENT_SEQUENTIAL 持久顺序型
会自动在节点路径名称后面添加一个自增的序号,如apple/iphone/macbook00000001,这种带自增序号的节点能保证输入同一路径时都能创建一个唯一的节点,可用于实现分布式队列,分布式公平锁。

EPHEMERAL 临时型
在回话结束后,节点自动删除。

EPHEMERAL_SEQUENTIAL 临时顺序型
临时节点特性,路径自动添加自增序号。

CONTAINER 容器型
zookeeper会有线程扫描容器型节点,当发现节点没有子节点时,就会删除掉容器节点。在没有没删除前,特性和持久节点一样,官方对此类型的节点用处说明是:Container nodes are special purpose nodes useful for recipes such as leader, lock, etc。

PERSISTENT_WITH_TTL 持久TTL型
TTL的意思是time to live ,他是容器节点之上的,当此类型节点之下没有子节点且未被修改的时间超过TTL后,就会被删除。要想使用该类型,必须在zookeeper的bin/zkService.sh中的启动zookeeper的java环境中设置环境变量zookeeper.extendedTypesEnabled=true(具体做法在下边),否则KeeperErrorCode = Unimplemented for /**。

PERSISTENT_SEQUENTIAL_WITH_TTL 持久顺序TTL型
就是持久TTL型加上顺序节点的特性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值