一,四种类型的节点
PERSISTENT | 持久化节点 |
PERSISTENT_SEQUENTIAL | 顺序自动编号持久化节点,这种节点会根据当前已存在的节点数自动加 1 |
EPHEMERAL | 临时节点, 客户端session超时这类节点就会被自动删除 |
EPHEMERAL_SEQUENTIAL | 临时自动编号节点 |
二,四种类型的节点的创建方式
##PERSISTENT
[zk: localhost:2181(CONNECTED) 1] create /jin/y1 ""
Created /jin/y1
##PERSISTENT_SEQUENTIAL
[zk: localhost:2181(CONNECTED) 2] create -s /jin/y2 ""
Created /jin/y20000000002
##EPHEMERAL
[zk: localhost:2181(CONNECTED) 3] create -e /jin/y3 ""
Created /jin/y3
##EPHEMERAL_SEQUENTIAL
Command failed: java.lang.IllegalArgumentException: Path must start with / character
[zk: localhost:2181(CONNECTED) 4] create -s -e /jin/y4 ""
Created /jin/y40000000004
三,四种类型的节点的异同
##再次打开临时节点消失 -->本次session断开则不存在
##顺序节点是在节点后按顺序添加十位数字
[zk: localhost:2181(CONNECTED) 0] get /jin/y
y1 y20000000002
[zk: localhost:2181(CONNECTED) 7] get /jin/y1 cZxid = 0xb00000008 |
[zk: localhost:2181(CONNECTED) 1] get /jin/y20000000002 cZxid = 0xb00000009 |
[zk: localhost:2181(CONNECTED) 1] get /jin/y3 cZxid = 0xb00000034 |
[zk: localhost:2181(CONNECTED) 1] get /jin/y40000000012 cZxid = 0xb00000036 |
#ephemeralowner 当前节点的如果是临时节点,该属性是临时节点的事物ID
1,ephemeralowner =0x0 的是持久化节点,临时节点只能从节点名称辨别;
2,临时节点会在断开连接时消失;
3,除了ephemeralowner这个,其他的都一致。
题外话:至于顺序节点超过10位数怎么办的问题,我认为首先得服务器承受的住,这也是系统优化的一部分,一个目录下超过7位数已经可以让一个不错的服务器瘫痪了。