ZooKeeper的部分原理认识

在这里插入图片描述

一、Zookeeper中znode子节点

ZooKeeper采用了类似文件系统的的数据模型,其节点构成了一个具有层级关系的树状结构。节点以绝对路径表示,不存在相对路径,且路径最后不能以 / 结尾(根节点除外)。

  • 临时节点:存活时间依赖于客户端会话,当会话结束,临时节点将会被自动删除(当然也可以手动删除临时节点)。主要用于线上线下的服务分类。
  • 持久节点:存活时间不依赖于客户端会话,只有客户端在显式执行删除节点操作时,节点才消失。
### 创建节点:节点为/module1 数据为module1
create /module1 module1
### 创建临时节点:-e 指定
create -e /module1/app1 app1
### 查看节点:
get /module1/app1
  • 顺序节点:创建顺序节点时,zk都会在路径后面自动添加上10位的数字(计数器)。计数器可以保证在同一个父节点下是唯一的。在zk内部使用了4个字节的有符号整形来表示这个计数器。溢出是在计数器大于214748364时。
### 创建顺序节点/持久顺序节点
create -s /module1/app app
得到:Created /module1/app0000000001

### 临时顺序节点
create -s -e /module1/app app

对于节点的数据:都是完整的读取与完整的写入操作。具备原子性。

dataVersion:数据版本号,每次对节点进行set操作,dataVersion的值都会增加1(即使设置的是相同的数据)。
cversion:子节点的版本号。当znode的子节点有变化时,cversion 的值就会增加1。
aclVersion:访问控制

由于版本号的不同,会导致某些正在进行中的操作保存失败。 C1修改子节点一,版本号增1,然后C2修改该子节点,那么版本号又会增1,与原来C1修改时的版本号不同,所以C1的修改不会被保存(版本号过期)。版本号不一致阻止并行操作。
在这里插入图片描述

1.事务ID

事务id具备唯一性,以此确定执行的先后顺序。
Znode被创建的事务id,cZxid。
Znode被修改的事务id,mZxid(修改即会被更新)。

在这里插入图片描述

集群模式下,客户端有多个服务器可以连接,当尝试连接到一个不同的服务器时,这个服务器的状态要与最后连接的服务器的状态要保持一致。Zk正是使用zxid来标识这个状态,描述了客户端在重连情况下zxid的作用。当客户端因超时与S1断开连接后,客户端开始尝试连接S2,但S2延迟于客户端所识别的状态。然而,S3的状态与客户端所识别的状态一致,所以客户端可以安全连接上S3。

2.时间戳

子节点根据时间线确定节点所保存的数据。
znode的创建时间和修改时间,创建时间是znode创建时的时间,创建后就不会改变;修改时间在每次更新znode时都会发生变化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值