zoukankan      html  css  js  c++  java
  • zookeeper 学习(一) 初识zookeeper

    1安装zookeeper

    1.1linux上安装

    【如果在bin文件夹下执行命令,则下列命令中/bin  则可以去掉】

    1.下载地址:

    https://downloads.apache.org/zookeeper

    2.安装代码:【如果安装不成功,则去网址找到存的版本】

    wget https://downloads.apache.org/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz

    3.操作

    tar zxvf apache-zookeeper-3.6.2-bin.tar.gz 
    cd apache-zookeeper-3.6.2-bin 
    cp conf/zoo_sample.cfg conf/zoo.cfg

    4.配置 【temp 临时文件,会被清理掉】=>vi conf/zoo.cfg 把内容修改为:

    tickTime=2000 
    dataDir=/var/lib/zookeeper 
    clientPort=2181

    5.启动和停止

    #首先进行下面操作, 进入到相关文件夹下
    cd apache-zookeeper-3.6.2-bin
    #启动
    ./bin/zkServer.sh start 
    
    #停止
    ./bin/zkServer.sh stop

    成功运行界面

    1.2windows上安装

    1.首先下载

    网址 https://zookeeper.apache.org/releases.html
    下载 3.6.0
    解压 zookeeper

    2.将conf目录下的zoo_sample.cfg文件,复制一份,重命名为zoo.cfg

    3.修改zoo.cfg配置文件,将dataDir=/tmp/zookeeper修改成zookeeper安装目录所在的data文件夹(需要在安装目录下面新建一个空的data文件夹和log文件夹),再添加一条添加数据日志的配置,如下图

     4.一些参数说明

      tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
      initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒
      syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒
      dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
      clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

    5.启动zookeeper,判定是否安装成功,双击运行bin目录下的zkServer.cmd文件即可,通过 zkCli.cmd判断是否执行成功

    2节点znode (基本数据模型)

    1. 树形结构,也可以理解为linux的文件目录
    2. 每一个节点都是znode,里面可以包含数据,也可以有子节点
    3. 点分为永久节点和临时节点( session失效,也就是客户端断开后,临时节点消失)
    4. 每个znode都有版本号,每当数据变化,版本号会累加(乐观锁进行操作)
    5. 删除或修改节点,版本号不匹配的话(版本号已过时) , 会报错
    6. 每个节点存储的数据不宜过大,几K即可
    7. 节点可以设置权限,来限制用户的访问
    8. Zookeeper保证读和写都是原子操作,且每次读写操作都是对数据的完整读取或完整写入
    9.  节点类型

      1. 持久节点
      2. 临时节点
      3. 顺序节点.【持久节点和临时节点都可以是顺序/非顺序节点】
    10. 节点属性
      1. dataVersion:数据版本号,每次对节点进行set操作,就会增加1
      2. cversion :子节点发生变化,就会加1
      3. aclVersion:权限有变化的时候就会加1
    11. 2
     
     
     

    3初次安装错误

    错误1:Connection refused 

    1、查看是否端口被占用:./bin/zkServer.sh start-foreground

    可见-端口已经被占用,此时就需要修改一下端口

     

     进入data目录下修改zoo.cfg文件。在文件最后一行添加

    admin.serverPort=8123

    然后重新启动

    ./bin/zkServer.sh start

    进入客户端配置端口

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

    4常用命令

     4.1进入客户端操作节点

    #连接到 ZooKeeper 服务:
    ./zkCli.sh -server 127.0.0.1:2181
    #打开客户端 (在bin下 就可不要 /bin) ./bin/zkCli.sh -server #列出根下所有节点。首次部署zookeeper时,默认在根节点/下有一个叫做/zookeeper的保留节点。 ls / #创建demoNode1节点。默认为永久节点 create /demoNode1 2233 #获取demoNode节点的数据 get /demoNode1 #修改demoNode1节点的数据 set /demoNode1 world #修改节点数据,同时更新版本号 set /demoNode1 world #查看修改后的数据 get /demoNode1 #删除demoNode1节点 delete /demoNode1

    4.2zookeeper服务器启动、停止

    #启动ZK服务
    ./zkServer.sh start
    
    #停止ZK服务
    ./zkServer.sh stop
    
    #查看ZK服务状态
    ./zkServer.sh status
    
    
    #重启ZK服务状态
    ./zkServer.sh restart

     4.3节点操作

    #创建持久节点   demoNode节点下创建 demo节点  key demo value 2233
    
     create /demoNode/demo 2233
    
    #创建持久书顺序节点 -s   demoNode节点下创建 demos节点 key demo value 2233
    create -s /demoNode/demo 2233
    
    #创建按临时节点  -e   [临时节点不允许有子节点]  key temp value 2233  【临时节点一旦断开,就会消失】
     create -e /demoNode/temp  2233

    #查看状态
    stat /demoNode

    #获取节点数值
    get /demoNode

    #修改节点数值
    set /demoNode 2233

    #条件更新 set -v 当前节点版本(dataVersion) /节点名称 值 =》多线程安全
     set -v 1 /demoNode 344

    #删除
    delete /demoNode

  • 相关阅读:
    PHP siege 压测 QPS大小
    macOs 使用Homebrew升级到MySQL 8系列之后,php无法连接解决方法
    Nginx无法加载.woff .eot .svg .ttf等解决办法
    layer 点击弹出图片
    glusterFS系统中文管理手册(转载)
    Linux 命令行总结
    linux /proc/meminfo 文件分析(转载)
    每秒执行一个shell脚本(转载)
    python SMTP邮件发送(转载)
    Python XML解析(转载)
  • 原文地址:https://www.cnblogs.com/1439107348s/p/14465885.html
Copyright © 2011-2022 走看看