• Zookeeper高级特性与API


    一、高级特性
    1.watch机制
      配置中心、注册中心、分布式锁、leader选举等都会用到watch机制
      弊端:记不住到底是针对节点的删除和增加,以及修改数据有效,一次性这种感觉不好
    2.get -w/zk-watch:监听是一次性的,只对ZNode节点数据的变化有效果
    3.ls[s][-w][-R]path:当前ZNode创建或者删除,以及子节点创建或者删除都会有效果
    4.echo stat | ncat localhost 2181 查看zk状态
    二、监控zk-server的情况
    (1)Four letter words
    (2)JMX
    (3)AdminServer
    三、ACL权限控制
    1.Zookeeper supports the following permissions:
    2.create、read、write、delete、admin
    3.权限设置的格式
    4.scheme: id[anyone 所有人]:permission[访问权限:crwda]
    5.scheme
       world:
         'world' anyone :cdrwa[可以更改]
    6.auth
      表示scheme需要认证登录,也就说对应注册的用户需要拥有权限才可以访问 格式
      auth:user:password:permission
    7.digest
      scheme表示需要密码加密才能访问
         digest:username:BASE
    8.super
      表示超管,用于所有权限,并且能够设置权限
    9.序列化和反序列化
    10.将java对象 转变成二进制 以便在磁盘保存 或 在网络传输
    11.反序列化
    12.java json protobuf thrif avro 等
    13.性能:速度怎么样 文件大小怎么样
    14.jute序列化框架 很早就想把jute换成其他方式,只不过一直没有去做
    15.快照数据和事务日志
    16.快照数据:某一时刻,内存中的ZNode节点的序列化的结果,全量的序列化到磁盘中中进行保存 snapshot.zxid
    17.事务日志文件:记录每一次事务操作的记录,保存在dataLogDir如果目录没有单独配置,就也用dataDir
      所以+/version-2/log.zxid形式 某个文件创建了之后,肯定是以增量的方式进行保存
    18.文件什么时候创建?
      (1).第一次启动zk server的时候 看看会发生什么 5个DataNode的全量数据 不会预分配磁盘空间 22:13:01 时刻的全量数据
          第一次启动,有一些内存中已经构建好的默认节点,这些节点会持久化到磁盘中,会保存为snapshot文件名,并且后缀为zxid
          snapshot.0 因为此时的zxid是0
       (2)比如要进行事务操作,通过客户端连接客户端,算是一次事务操作吗?当然 预分配的磁盘空间64M 如果64M的空间不足4kb
          的时候,就会再申请64M的空间,注意还是同一个log文件
          事务日志文件
    18.这是zk.server不停止的情况下
    一次事务操作,会记录一次事务日志在log.1文件中,这个次数如果到达了50000-100000之间的一个随机值
      (1)就会触发一次snapShot,快照数据 snapshot.zxid
      (2)同时也会创建一个新的log.zxid文件
    19.假如重启zk server[前提条件:并且相比上一次重启,zxid有变化]
    20.此时也会生成snapshot和log
    21.文件什么时候清理?
    22.snapshot 10 log 10 会清理吗? 不一定,要看配置
    23.总结
     23.1针对每一次事务操作[客户端连接服务端、增加节点、删除节点、修改数据 zxidd都会+1],都会将事务操作的日志保存到log.zxid文件中,同时将数据的变化应用到DataTree。当经过了一定次数的
         [50000-100000]之间的事务操作之后,就会将DataTree的内存数据持久化全量到snapshot.zxidw文件中[考虑zk server重启的情况]
    24.client 发起一个写的命令 什么时候才算写成功了?response响应呢?至少要等 log文件写完
    25.事务日志如果要还原数据 是不是要执行 是不是要消耗cpu资源 zxidd都会
    26.快照数据 直接通过jvm加载快照数据 快速构建 DataTree

  • 相关阅读:
    MySQL的下载、安装、配置
    LAMP部署
    ucosii初认识==ucosii
    高项 03 项目立项管理
    第一个MyBatis程序
    pango logos 双启动
    神经网络是模型还是算法,神经网络模型数据处理
    基于nodejs+vue 校园通勤车系统
    卷积神经网络(Convolutional Neural Networks,CNN)
    InNoClassDefFoundError:InternalFutureFailureAccess-命令打包出错解决办法
  • 原文地址:https://blog.csdn.net/qq_33816292/article/details/126415026