美文网首页
[java]64、zookeeper安装

[java]64、zookeeper安装

作者: 史记_d5da | 来源:发表于2023-01-04 11:47 被阅读0次

    1、安装步骤

    1.1、下载最新的zookeeper版本

    zookeeper下载地址
    可以通过wget命令下载,也可以由外部下载通过scp命令传入例如:
    scp apache-zookeeper-3.8.0-bin.tar.gz root@192.168.2.128:/usr/local/soft

    1.2、解压到指定目录

    tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz -C /usr/local/
    修改文件名称
    mv apache-zookeeper-3.6.0-bin zookeeper-server01

    1.3、修改配置文件

    配置文件所在的目录:
    zookeeper-server01/conf
    在该目录下创建配置文件zoo.cfg,如下命令
    cat zoo_sample.cfg |grep -v "#" |grep -v "^$" > zoo.cfg
    在配置文件中添加如下内容

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/usr/local/zookeeper-server-01/data
    clientPort-2181
    server.1=192.168.2.128:2887:3887
    server.2=192.168.2.128:2888:3888
    server.3=192.168.2.128:2889:3889
    

    tickTime=2000 # 心跳的时间单位 毫秒值
    initLimit=10 # 启动集群的初始化的事件 10个心跳单位 20s
    syncLimit=5 # 集群服务器同步数据的事件5个心跳单位, 10s钟
    dataDir=/usr/local/zookeeper-server-01/data #数据的快照存储目录
    clientPort=2181 #服务端提供客户端访问的连接接口

    1.4、创建存储数据目录

    1、在/zookeeper-server-01/下创建data目录
    mkdir -p /usr/local/zookeeper-server-01/data
    2、在/data/目录下创建一个标志文件myid
    cd /usr/local/zookeeper-server-01/data/
    echo 1 > myid

    1.5、创建同样的zookeeper资源

    同时在创建两份
    cp -R zookeeper-server01 zookeeper-server02
    cp -R zookeeper-server01 zookeeper-server03
    重复以上步骤,同步修改zookeeper-server02zookeeper-server03zoo.cfg文件和myid
    zookeeper-server02

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/usr/local/zookeeper-server-02/data
    clientPort-2182
    server.1=192.168.2.128:2887:3887
    server.2=192.168.2.128:2888:3888
    server.3=192.168.2.128:2889:3889
    

    cd /usr/local/zookeeper-server-02/data/
    echo 2 > myid


    zookeeper-server03

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/usr/local/zookeeper-server-03/data
    clientPort-2183
    server.1=192.168.2.128:2887:3887
    server.2=192.168.2.128:2888:3888
    server.3=192.168.2.128:2889:3889
    

    cd /usr/local/zookeeper-server-03/data/
    echo 3 > myid

    1.6、启动服务

    zkServer.sh start # 启动命令
    zkServer.sh status # 查看状态命令
    zkServer.sh stop # 停止服务命令
    zkServer.sh restart# 停止服务命令

    2、Zookeeper的核心工作机制

    2.1、zookeeper的核心工作机制

    1、Zookeeper:一个leader,多个follower组成的集群(3个节点 最佳实践)
    2、全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的
    3、分布式读写,更新请求转发,由leader实施
    4、更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行
    5、数据更新原子性,一次数据更新要么成功(半数以上节点成功),要么失败
    6、实时性,在一定时间范围内,client能读到最新数据(毫秒级别) 1M

    2.2、zookeeper数据结构

    1、层次化的目录结构,命名符合常规文件系统规范(见下图)
    2、每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识
    3、节点Znode可以包含数据(只能存储很小量的数据,<1M)和子节点(但是EPHEMERAL类型的节点不能有子节点,下一页详细讲解)
    4、客户端应用可以在节点上设置监视器

    2.3、节点类型

    Znode有四种形式的目录节点
    PERSISTENT 持久化节点
    PERSISTENT_SEQUENTIAL 持久化顺序节点
    EPHEMERAL 临时节点
    EPHEMERAL_SEQUENTIAL 临时节点顺序节点
    创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护
    在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序

    3、创建节点

    3.1、服务器的启动和监控

    zkServer.sh start | stop | restart | status
    jps 查看java进程 QuorumPeerMain
    netstat -natl
    netstat -ntpl

    3.2、客户端连接

    zkCli.sh -server 192.168.2.128:2181
    如果是连接当前本机地址, 可以使用 zkCli.sh

    3.3、创建节点

    create [-s] [-e] [-c] [-t ttl] path [data] [acl] 命令创建节点
    -s: 顺序节点 默认为否
    -e: 临时节点 默认为否
    -c: 创建一个容器节点
    -t ttl 创建一个持久化节点或者一个持久化顺序节点的时候, 指定存活时间
    path: 路径|目录
    data: 设置路径下存放的数据
    1、创建持久化节点
    create /pNod pNode
    2、创建临时节点
    create -e /eNode eNode
    临时节点在会话关闭以后, 会自动删除
    临时节点不允许有子节点
    3、创建顺序节点
    create /lock
    create -s /lock/getId
    create -e -s /lock/getId2
    对于顺序节点, 是允许进行节点重复创建, 默认会在节点后面添加一个全局唯一的顺序ID
    4、创建容器节点
    容器节点: 可以用来一个节点, 下面存放多个子节点, 当子节点删除完以后, 容器节点会自动删除
    create -c /cnode cnode
    create -c /cnode/child01 child01
    create -c /cnode/child02 child02
    delete /cnode/child01
    delete /cnode/child02
    get /cnode
    会通过定时器, 在一分钟没有子节点, 直接删除改节点znode.container.checkIntervalMs

    3.4、查看节点

    ls [-s] [-w] [-R] path
    [-s] : 显示统计信息
    [-w]: 查看事件信息
    [-R]: 显示递归目录
    例如:
    ls -R /

    /
    /pNode
    /tempNode
    /zookeeper
    /pNode/node01
    /zookeeper/config
    /zookeeper/quota
    
    3.5、获取节点

    get [-s] [-w] path
    -s: 显示统计信息
    -w: 获取事件信息

    get -s /pNode
    pNode # 获取到的节点数据
    cZxid = 0x600000010 # 创建节点的事务Id
    ctime = Tue Apr 21 16:23:31 CST 2020 #创建时间
    mZxid = 0x600000010 # 修改的事务ID
    mtime = Tue Apr 21 16:23:31 CST 2020 #修改时间
    pZxid = 0x600000010
    cversion = 0 # 当前版本信息
    dataVersion = 0 #数据版本信息
    aclVersion = 0 #权限版本信息
    ephemeralOwner = 0x0 #临时节点的会话ID
    dataLength = 5 # 数据长度
    numChildren = 0 # 子节点个数

    3.6、修改节点数据

    set [-s] [-v version] path data
    -s 设置过程显示节点的状态信息
    -v: 使用CAS设置数据, 使用国歌声, 可以使用stat从dataVersion中找到版本
    set -v 0 /node2 node3
    set /node2 node3

    3.7、删除节点

    1、删除单个节点
    delete [-v version] path
    -v: 在并发的时候, 使用乐观锁进行删除
    delete /node2
    2、删除所有节点(递归删除)
    deleteall /pNod

    相关文章

      网友评论

          本文标题:[java]64、zookeeper安装

          本文链接:https://www.haomeiwen.com/subject/grisqdtx.html