zookeeper 学习(一):简单认识zookeeper

zookeeper 学习(一):简单认识zookeeper
zk官网

  • zk是什么?
    highly reliable distributed coordination. 来自官网,高可用的分布式协调服务,应用最多的场景就是用来做其他服务中间件的协调者,我最开始接触zk ,是用来做注册中心,后来搭建kafka,需要用zookeeper。官网的上面的应用场景 如下
    zookeeper 学习(一):简单认识zookeeper_第1张图片
    其实zk内部就想一个文件系统一样,内部数据以节点znode的形式保存,节点的特性去帮助我们实现以上这些功能
    zookeeper 学习(一):简单认识zookeeper_第2张图片

  • 安装zookeeper

    个人学习,这里推荐使用docker 安装,方便快捷,默认端口 映射 2181

    • docker pull zookeeper
    • docker run --name some-zookeeper --restart always -d zookeeper
      在这里插入图片描述
  • 使用zkcli.sh 客户端连接服务端操作

    • /bin/zkCli.sh -server 127.0.0.1:2181

    zookeeper 学习(一):简单认识zookeeper_第3张图片

    • help 查询命令,很简单的,基本都能看懂
      zookeeper 学习(一):简单认识zookeeper_第4张图片
  • 节点属性
    zookeeper 学习(一):简单认识zookeeper_第5张图片

    • numChildren:当前节点子节点的数量
    • dataLength:当前节点保存的数据长度
    • ephemeralOwner:当前节点是否为临时节点,如果为临时节点则该值为
      sessionid,否则为0
    • dataVersion:当前节点的数据被修改的次数,也就是数据的版本
    • cversion:子节点的版本号
    • aversion:acl的版本号
    • czxid:表示当前节点被创建时的事务id
    • mzxid:表示当前节点被最后一次更新时的事务id
    • pzxid:表示该节点的子节点最后一次被修改时的事务id。只有子节点变化才会影响pzxid ,子节点的数据变化不会影响pzxid
zxid是事务编号,8字节的整型数,即64个比特位,前32位标识epoch,后32位用来计
数。
zxid的初始值为0,用二进制标识就是 00000000 00000000 00000000 00000000
每一次事务请求都会把后面32位的值+1,比如进行了10次事务请求,则zxid变为
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00001010
每进行一次leader选举,前32位的值就会+1,并把后面的32位清零,则zxid变为
00000000 00000000 00000000 00000001 00000000 00000000 00000000 00000000
若一直没有进行leader选举,同时一直在发生事务请求,则后面32位会一直增加,极限
值是00000000 00000000 00000000 00000000 11111111 11111111 11111111
11111111
此时再发生事务请求,则把前面的32位+1,变成00000000 00000000 00000000
00000001 00000000 00000000 00000000 00000000
  • 节点特性
    • 持久节点,create 默认创建的就是持久节点,顾名思义,可以持久化的节点
    • 临时节点 ,create -e 临时节点客户端断开就会删除
    • 有序节点 create -s 会默认创建一个带自增序号的节点
    • 容器节点 create -c ,容器节点会随着所有子节点的删除而删除
    • TTL节点 带有过期时间的节点

你可能感兴趣的:(zookeeper)