zookeeper的简介和相关命令操作
阅读原文时间:2022年04月23日阅读:1

.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); border-top-left-radius: 7px; border-top-right-radius: 7px; color: rgba(255, 255, 255, 1); height: 1.8em; line-height: 1.8em; padding: 5px }

1. zookeeper的简介

  zookeeper由文件系统和通知机制构成

  应用场景:

   ①dubbo+ zookeeper 实现rpc远程调用中

   ②负载均衡

   ③发布订阅

   ④分布通知、分布式锁

  1)文件系统

    Zookeeper使用树形结构管理数据。而且以“/”作为树形结构的根节点。树形结构中的每一个节点都是一个“znode”。文件系统中的目录可以存放其他目录和文件,znode中可以存放其他znode,也可以对应一个具体的值,znode和它对应的值之间是键值对的关系。

  树形结构

    ①树形结构的主体由znode组成

    ②每一个节点包含下面两部分

      I. 值:节点的路径和当前节点上保存的值构成一个“键值对(key-value)”关系

      II. 状态 stat

  2)通知机制

    在分布式项目中随着业务功能越来越多,具体的功能模块也会越来越多,一个大型的电商项目能达到几十个模块甚至更多。这么多模块的工程由可能需要共享一些信息,这些信息一但发生变化,各个相关模块工程中手动逐一修改会非常的麻烦,甚至可能发生遗漏。

    使用ZooKeeper的通知机制后,各个模块工程在特定的znode上设置Watcher(观察者)来监控当前节点上值的变化,一旦Watcher检测到了数据变化就会立即通知模块,从而实现“一处修改,处处生效”的效果。

    ①目的:一处修改处处更新

②机制:观察者模式

2. zoo_sample.cfg文件解析

  该文件在zookeeper的解压包的conf中(如:/opt/zookeeper-3.4.9/conf

  文件中的各个参数的说明:

  1)tickTime  通信心跳数,zookeeper服务器心跳时间,单位毫秒。

    Zookeeper使用的基本时间,服务器之间或者客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。

    用于心跳机制,并且设置最小的session超时时间为两倍心跳时间(session的最小超时时间是2 * tickTime)。

  2)initLimit  LF初始通信时限

    集群中的Follower跟随者服务器(F)与Leader领导者服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)

    投票选举新Leader的初始化时间Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。

    Leader允许Follower在initLimit时间内完成这个工作。

  3)syncLimit  LF同步通信时限

    集群中Leader与Follwer之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follower

    在运行过程中,Leader负责与ZooKeeper集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。

    如果L发出心跳包在syncLimit之后,还没有从F那收到响应,那么久认为这个F已经不在线了。

  4)dataDir  数据文件目录 + 数据持久化路径

    保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。

  5)clientPort  客户端连接端口

3.  ZooKeeper常用命令

  1)服务端的相关命令(在zookeeper安装目录的bin目录下)

    启动:./zkServer.sh start

    停止:./zkServer.sh stop

    查看状态:./zkServer.sh status

  2)客户端的相关命令

    进入:./zkClient.sh

    退出:quit

  3)客户端节点相关操作

    ①ls / ls2

    ②create  [-s] [-e] path data 创建节点和节点上对应的值

      【-s】:含有序列

      【-e】:临时(重启或者超时消失)

      【path】:节点的路径

      【data】:节点上绑定的值

    例:create /test  abc

    ③deletermr

      【delete】 只能删除空节点

      【rmr】可以在删除当前节点时递归删除子节点

    ④stat path 查看状态

  4)节点值操作命令

    ①set  path data:设置值

    例:set /test aaa

    ②get  path data:获取值

    例:get /test

   注:若敲错了命令,则会给出所有的命令操作提示信息

  5)关于状态stat信息的详细说明:

    简介:znode维护了一个stat结构,这个stat包含数据变化的版本号、访问控制列表变化、还有时间戳。版本号和时间戳一起,可让ZooKeeper验证缓存和协调更新。每次znode的数据发生了变化,版本号就增加。  

    参数说明:

    czxid:引起这个znode创建的zxid,创建节点的事务的zxid(ZooKeeper Transaction Id)

    ctime:znode被创建的毫秒数(从1970年开始)

    mzxid:znode最后更新的zxid

    mtime:znode最后修改的毫秒数(从1970年开始)

    pZxid:znode最后更新的子节点zxid

    cversion:znode子节点变化号,znode子节点修改次数

    dataversion:znode数据变化号

    aclVersion:znode访问控制列表的变化号

    ephemeralOwner:如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0。

    dataLength:znode的数据长度

    numChildren:znode子节点数量

  6)四字命令

    ZooKeeper支持某些特定的四字命令,他们大多是用来查询ZooKeeper服务的当前状态及相关信息的,使用时通过telnet或nc向ZooKeeper提交相应命令。例:echo ruok | nc localhost 2181

    ①nc命令需要安装对应的程序才可以使用。

      yum install -y nc

    ②常用四字命令

      ruok:测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应

      stat:输出关于性能和连接的客户端的列表

      conf:输出相关服务配置的详细信息

      cons:列出所有连接到服务器的客户端的完全的连接 /会话的详细信息。包括“接受 / 发送”的包数量、会话id 、操作延迟、最后的操作执行等等信息

      dump:列出未经处理的会话和临时节点

      envi:输出关于服务环境的详细信息(区别于conf命令)

      reqs:列出未经处理的请求

      wchs:列出服务器watch的详细信息

      wchc:通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表

      wchp:通过路径列出服务器 watch的详细信息。它输出一个与 session相关的路径

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章