zookeeper学习之路(四)持久化,临时,顺序节点的异同

11 篇文章 0 订阅
7 篇文章 0 订阅

一,四种类型的节点

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
ctime = Thu Jun 13 20:09:50 PDT 2019
mZxid = 0xb00000008
mtime = Thu Jun 13 20:09:50 PDT 2019
pZxid = 0xb00000008
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 0

[zk: localhost:2181(CONNECTED) 1] get /jin/y20000000002

cZxid = 0xb00000009
ctime = Thu Jun 13 20:10:28 PDT 2019
mZxid = 0xb00000009
mtime = Thu Jun 13 20:10:28 PDT 2019
pZxid = 0xb00000009
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 0

[zk: localhost:2181(CONNECTED) 1] get /jin/y3

cZxid = 0xb00000034
ctime = Thu Jun 13 23:17:11 PDT 2019
mZxid = 0xb00000034
mtime = Thu Jun 13 23:17:11 PDT 2019
pZxid = 0xb00000034
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x16b5416b5990003
dataLength = 0
numChildren = 0

[zk: localhost:2181(CONNECTED) 1] get /jin/y40000000012

cZxid = 0xb00000036
ctime = Thu Jun 13 23:17:48 PDT 2019
mZxid = 0xb00000036
mtime = Thu Jun 13 23:17:48 PDT 2019
pZxid = 0xb00000036
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x16b5416b5990004
dataLength = 0
numChildren = 0


#ephemeralowner 当前节点的如果是临时节点,该属性是临时节点的事物ID

1,ephemeralowner =0x0  的是持久化节点,临时节点只能从节点名称辨别;

2,临时节点会在断开连接时消失;

3,除了ephemeralowner这个,其他的都一致。

题外话:至于顺序节点超过10位数怎么办的问题,我认为首先得服务器承受的住,这也是系统优化的一部分,一个目录下超过7位数已经可以让一个不错的服务器瘫痪了。

时隔两年,想想之前自己问的问题,官网上就解释很清楚了,zookeeper基于内存级的分布式协调服务,追求的是快速,不是数据库,不能做数据库,违背了设计初衷,虽然你确实可以这么用,但要知道它的资源是金贵的,既然说到这了,可以利用设置角色的方式,假设30台机器,25用于只读,5台用于主从。

之前项目是分别使用了两种节点,实现注册发现,业务服务启动时,会使用临时节点注册对应的服务名称到zk中,服务对应的接口是使用的永久节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值