zk学习笔记

一、zk集群搭建

Zk-Node01 10.0.0.40

Zk-Node02 10.0.0.41

Zk-Node03 10.0.0.42

yum install -y java-1.8*

rpm -qa|grep java

配置JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH

source /etc/profile

tar -zxvf apache-zookeeper-3.5.9.tar.gz

mv apache-zookeeper-3.5.9 zookeeper

cd zookeeper

mkdir data&& mkdir logs

cd data/ echo "1">>myid echo "2">>myid echo "3">>myid

cp zoo_sample.cfg  zoo.cfg

vim zoo.cfg

dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs

server.1=10.0.0.40:2888:3888
server.2=10.0.0.41:2888:3888
server.3=10.0.0.42:2888:3888

二、zk理论学习

1、ZooKeeper(ZK)的节点类型非常多样,ZK支持以下几种节点类型:

1. **持久节点**:这是最常见的节点类型,无论客户端是否连接,节点都存在。持久节点可以创建子节点,并且是默认的节点类型 。

2. **临时节点**:与持久节点不同,临时节点的生命周期与客户端会话绑定,一旦会话结束,节点就会被删除。这种节点通常用于分布式锁释放或健康检查等场景 。

3. **持久顺序节点**:这种节点除了具备持久节点的特性外,ZooKeeper还会自动在节点名称后添加一个数字后缀,确保节点路径的唯一性。这可以用于实现分布式队列或公平锁等 。

4. **临时顺序节点**:与持久顺序节点类似,但遵循临时节点的生命周期规则,即会话结束后节点被删除 。

5. **容器节点**:从ZooKeeper 3.5版本开始新增的节点类型,当容器节点的子节点数量为0时,ZK服务端会自动删除该节点。容器节点在没有子节点时表现得像持久节点 。

6. **持久TTL节点**:这种节点具备持久节点的特性,并且增加了一个存活时间(TTL),如果节点下没有子节点,超过TTL指定的时间后会被自动删除。这需要额外配置`zookeeper.extendedTypesEnabled`为`true` 。

7. **持久顺序TTL节点**:结合了持久顺序节点和TTL节点的特性,既有顺序后缀也有存活时间限制 。

每种节点类型都有其特定的使用场景和属性。例如,临时顺序节点是实现分布式锁的基础 ,而容器节点适用于leader选举或锁的实现场景 。


2、znode节点属性信息介绍

ZooKeeper的znode结构属性是其数据模型中的重要组成部分,每个znode都包含了一系列的属性,以下是对这些属性的详细介绍:

1. **cZxid**:创建节点时的事务ID,标识了创建znode的操作的唯一性 。
2. **ctime**:创建节点时的时间,记录了znode被创建的具体时间 。
3. **mZxid**:最后修改节点时的事务ID,标识了最后一次修改znode的操作的唯一性 。
4. **mtime**:最后修改节点时的时间,记录了znode最后一次被修改的具体时间 。
5. **pZxid**:表示该节点的子节点列表最后一次修改的事务ID。这个ID在添加或删除子节点时会更新,但修改子节点的数据内容不会影响这个ID 。
6. **cversion**:子节点版本号,每当子节点发生变更时,这个版本号会增加 。
7. **dataVersion**:数据版本号,每当znode的数据被修改时,这个版本号会增加 。
8. **aclVersion**:权限版本号,每当znode的ACL(访问控制列表)发生变化时,这个版本号会增加 。
9. **ephemeralOwner**:如果znode是临时节点,这个属性记录了创建该节点的会话的sessionID;如果是持久节点,这个属性的值为0 。
10. **dataLength**:节点的数据长度,表示znode存储的数据大小 。
11. **numChildren**:节点拥有的子节点数量,只统计直接子节点的数量 。

这些属性共同定义了znode的状态和特性,使得ZooKeeper能够支持复杂的分布式协调任务。通过这些属性,ZooKeeper能够保证数据的一致性、顺序性和版本的控制。

3.zk的java客户端curator

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值