Zookeeper-Zookeeper特性与节点数据类型详解

1.Zookeeper介绍

        ZooKeeper 是一个开源的分布式协调框架,是Apache Hadoop 的一个子项目,主要用来解决分布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂目容易出错的分布式一致性服务封装起来,构成一高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

        Zookeeper本质上是一个分布式的小文件存储系统(Zookeeper=文件系统+监听机制)。提供基于类似于文件系统的目录树式的数据存储,并且可以对树中的节点进行有效管理,从而用来维护和监控存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理、统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式协调等功能

        Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。

 

 2.Zookeeper快速开始

2.1 Zookeeper安装
下载地址: https://zookeeper.apache.org/releases.html
运行环境: jdk8

 1)修改配置文件
解压安装包后进入conf目录,复制zoo sample.cfg,修改为zoo.cfg

 

 2)启动zookeeper server

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

# 查看zookeeper状态
bin/zkServer.sh status

3)启动zookeeper client连接Zookeeper server

 

 2.3GUI工具

        Zookeeper图形化工具: Zoolnspector
        Zookeeper图形化丁具: 开源的prettyZoo
        Zookeeper图形化工具: 收费的ZooKeeperAssistant


3.ZooKeeper数据结构

        ZooKeeper 数据模型的结构与Unix 文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。

ZooKeeper的数据模型是层次模型,层次模型常见于文件系统。层次模型和key-value模型是两种主流的数据模型。ZooKeeper使用文件系统模型主要基于以下两点考虑:
        1.文件系统的树形结构便于表达数据之间的层次关系
        2.文件系统的树形结构便于为不同的应用分配独立的命名空间( namespace)

ZooKeeper的次模型称作Data Tree,Data Tree的每个节点叫作Znode。不同于文件系统,每人节点都可以保存数据,每一个ZNode 默认能够存储1MB 的数据,每个ZNode 都可以通过其路径唯-标识,每个节点都有一个版本(version),版本从0开始计数。 

3.1节点分类

        zookeeper存在几种不同的节点类型,他们具有不同的生命周期:

一个znode可以使持久性的,也可以是临时性的
        1.持久节点(PERSISTENT): 这样的znode在创建之后即使发生ZooKeeper集群宕机或者client宕机也不会丢失.

        2.临时节点(EPHEMERAL): dlient宕机或者dlient在指定的timeout时间内没有给ZooKeeper集群发消息,这样的znode就会消失。


如果上面两种znode具备顺序性,又有以下两种znode:

        3.持久顺序节点(PERSISTENT SEQUENTIAL): znode除了具备持久性znode的特点之外,znode的名字具备顺序性.

        4.临时顺序节点(EPHEMERAL SEQUENTIAL): node除了具备临时性znode的特点之外,zorde的名字具备顺序性.

zookeeper主要用到的是以上4种节点


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

 6.TTL节点: 带过期时间节点,默认禁用,需要在00.cig中添加 extendedTypesEnabledetrue 开启。

注意: TTL不能用于临时节点

 节点状态信息
类似于树状结构,节点下面是可以存储一些信息和属性的。可以通过stat命令来进行查看。

        cZxid: Znode创建的事务id.
        ctime:节点创建时的时间戳.
        mZxid: Znode被修改的事务id,即每次对znode的修改都会更新mZxid.


对于zk来说ÿ

  • 36
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长情知热爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值