Zookeeper核心知识全解:节点类型、集群架构与选举机制

一、部署Zookeeper

1.1 解压zookeeper压缩包, 进入conf目录,复制zoo_sample.cfg,修改为zoo.cfg

cp zoo_sample.cfg zoo.cfg
修改 zoo.cfg 配置文件,将 dataDir=/tmp/zookeeper 修改为指定的data目录。

1.2 启动zookeeper server

可以通过 bin/zkServer.sh 来查看都支持哪些参数,默认加载配置路径conf/zoo.cfg

bin/zkServer.sh start
bin/zkServer.sh start conf/zoo.cfg

1.3 查看zookeeper状态

bin/zkServer.sh status ,启动zookeeper client连接Zookeeper server

bin/zkCli.sh

#连接远程的zookeeper server
bin/zkCli.sh -server ip:port

二、节点类型

2.1 持久节点(PERSISTENT)

这样的znode在创建之后即使发生ZooKeeper集群宕机或者client宕机也不会丢失。
create /locks

2.2 临时节点(EPHEMERAL )

client宕机或者client在指定的timeout时间内没有给ZooKeeper集群发消息,这样的znode就会消失
create -e /locks

2.3 持久顺序节点(PERSISTENT_SEQUENTIAL)

znode除了具备持久性znode的特点之外,znode的名字具备顺序性。
create -s /locks

2.4 临时顺序节点(EPHEMERAL_SEQUENTIAL)

znode除了具备临时性znode的特点之外,zorde的名字具备顺序性。zookeeper主要用到的是以上4种节点。
create -e -s /locks

2.5 Container节点 (3.5.3版本新增)

Container容器节点,当容器中没有任何子节点,该容器节点会被zk定期删除(定时任务默认60s 检查一次)。
和持久节点的区别是 ZK 服务端启动后,会有一个单 独的线程去扫描,所有的容器节点,当发现容器节点的子节点数量为 0 时,
会自动删除该节点。可以 用于 leader 或者锁的场景中。
create -c /work

2.6 TTL节点

带过期时间节点,默认禁用,需要在zoo.cfg中添加 extendedTypesEnabled=true 开启。注意:TTL不能用于临时节点个节点有序的性质。
create -t 3000 /ttl_node

三、Stat信息介绍

  • cZxid :Znode创建的事务id。
  • ctime:节点创建时的时间戳。
  • mZxid :Znode被修改的事务id,即每次对znode的修改都会更新mZxid。对于zk来说,每次的变化都会产生一个唯一的事务id,
    zxid(ZooKeeper Transaction Id),通过zxid,可以确定更新操作的先后顺序。例如,如果zxid1小于zxid2,
    说明zxid1操作先于zxid2发生,zxid对于整个zk都是唯一的,即使操作的是不同的znode。
  • pZxid:表示该节点的子节点列表最后一次修改的事务ID,添加子节点或删除子节点就会影响子节点列表,
    但是修改子节点的数据内容则不影响该ID(注意:只有子节点列表变更了才会变更pzxid,子节点内容变更不会影响pzxid)
  • mtime:节点最新一次更新发生时的时间戳.
  • cversion :子节点的版本号。当znode的子节点有变化时,cversion 的值就会增加1。
  • dataVersion:数据版本号,每次对节点进行set操作,dataVersion的值都会增加1(即使设置的是相同的数据),可有效避免了数据更新时出现的先后顺序问题。
  • ephemeralOwner:如果该节点为临时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值