zookeeper服务搭建及简单使用

zookeeper 是什么

    ZooKeeper是一个集中服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以某种形式被分布式应用程序使用。每次他们实施时,都会有很多工作来解决不可避免的错误和竞争条件。由于实施这些服务的困难,最初的应用程序通常会吝啬,这使得它们在变化和难以管理的情况下变得脆弱。即使正确完成,这些服务的不同实现会导致部署应用程序时的管理复杂性。(摘录自zookeeper官网)

ZooKeeper基本概念

集群角色

和Paxos算法中的集群角色类型,ZooKeeper中包含Leader、Follower和Observer三个角色;

通过一次选举过程,被选举的机器节点被称为Leader,Leader机器为客户端提供读和写服务;

Follower和Observer是集群中的其他机器节点,唯一的区别就是:Observer不参与Leader的选举过程,也不参与写操作的过半写成功策略。

一个典型的ZooKeeper集群如下:

会话

会话就是一个客户端与服务器之间的一个TCP长连接。客户端和服务器的一切交互都是通过这个长连接进行的;

会话会在客户端与服务器断开链接后,如果经过了设点的sessionTimeout时间内没有重新链接后失效。

节点

节点在ZeeKeeper中包含两层含义:

  1. 集群中的一台机器,我们成为机器节点;
  2. ZooKeeper数据模型中的数据单元,我们成为数据节点(ZNode)。

ZooKeeper的数据模型是内存中的一个ZNode数,由斜杠(/)进行分割的路径,就是一个ZNode,每个ZNode上除了保存自己的数据内容,还保存一系列属性信息;

ZooKeeper中的数据节点分为两种:持久节点和临时节点。

所谓的持久节点是指一旦这个ZNode创建成功,除非主动进行ZNode的移除操作,节点会一直保存在ZooKeeper上;而临时节点的生命周期是跟客户端的会话相关联的,一旦客户端会话失效,这个会话上的所有临时节点都会被自动移除。

版本

ZooKeeper为每一个ZNode节点维护一个叫做Stat的数据结构,在Stat中维护了节点相关的三个版本:

  1. 当前ZNode的版本 version
  2. 当前ZNode子节点的版本 cversion
  3. 当前ZNode的ACL(Access Control Lists)版本 aversion
监听器Watcher

ZooKeeper允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,ZooKeeper会通过事件通知到感兴趣的客户端上。

ACL(Access Control Lists)

ZooKeeper中定义了5中控制权限:

  1. CREATE:创建子节点的权限
  2. READ:获取节点数据和子节点列表的权限
  3. WRITE:跟新节点数据的权限
  4. DELETE:删除子节点的权限
  5. ADMIN:设置节点ACL的权限。

其中CREATE和DELETE这两种权限都是针对子节点的权限控制。

ZooKeeper的数据模型

上面有提到ZooKeeper的数据模型是一个ZNode节点树,是一个类型与标准文件系统的层次结构,也是使用斜杠(/)进行分割,如下图:

在ZooKeeper中每一个节点都可以使用其路径唯一标识,如节点p_1的标识为:/app1/p_1

每个ZNode节点都可以存储自己的数据,还可以拥有自己的子节点目录

主要说下 怎么搭建zookeeper(linux centos 6.7)

    首先环境:已安装jdk 

    

    jdk安装的1.8的 然后进入1下一步

     1.下载 zookeeper(https://zookeeper.apache.org/releases.html  官网页面选择进行下载)

     2.下载后放到 Linux服务器上可以使用文件上传工具 xftp 或者 插件 lrzsz (yum install lrzsz)

    3.进行解压 

         下载后的文件格式 为.tar.gz 使用 tar -zxvf zookeeper-3.4.12.tar.gz 

        例如在/usr/local/develope 解压 当然 文件也是位于这里的 解压后 

        会有个 zookeeper-3.4.12 文件夹 

        常用的解压命令

        tar –xvf file.tar       // 解压 tar包    
        tar -zxvf file.tar.gz    // 解压tar.gz    
        tar -jxvf file.tar.bz2   // 解压 tar.bz2    

        tar –Zxvf file.tar.Z    // 解压tar.Z   

    4.进入该文件夹 进入 conf 目录  复制一个 zoo_sample.cfg  命名为zoo.cfg 

        

        复制命令为: cp zoo_sample.cfg  /usr/local/develope/zookeeper-3.4.12/conf/zoo.cfg

    5.使用vim 命令 进行修改 zoo.cfg配置 

       

    如图已经修改好的 配置了一下 data 存放目录 日志存放目录   

6.在zookeeper-3.4.12 目录下创建 data 创建 logs目录        


7.进行启动 

    

    可能会遇到权限拒绝情况 对bin 文件夹下 文件 授予权限

    

简单测试 下连接


如果使用 默认 端口 2181 连接本机的 zookeeper 服务的直接在bin 目录下运行 ./zkCli.sh 就可以了    

若连接不同的主机,可使用如下命令:./zkCli.sh -server ip:port

可以使用帮助命令help来查看客户端的操作

********常见的客户端操作******

1.连接上客户端 情况下

      创建节点

  使用create命令,可以创建一个Zookeeper节点, 如

  create [-s] [-e] path data acl

  其中,-s或-e分别指定节点特性,顺序或临时节点,若不指定,则表示持久节点;acl用来进行权限控制。


    ② 创建临时节点

  使用 create -e /zk-temp 123 命令创建zk-temp临时节点

       

    

  临时节点在客户端会话结束后,就会自动删除,下面使用quit命令退出客户端

        

    重新连接客户端 使用 ls / 命令查看根目录下的连接节点  发现只有 zk-test节点了 temp 节点已经被删除

    

③ 创建永久节点

  使用 create /zk-permanent 123 命令创建zk-permanent永久节点

    

  可以看到永久节点不同于顺序节点,不会自动在后面添加一串数字。

 读取节点

  与读取相关的命令有ls 命令和get 命令,ls命令可以列出Zookeeper指定节点下的所有子节点,只能查看指定节点下的第一级的所有子节点;get命令可以获取Zookeeper指定节点的数据内容和属性信息。其用法分别如下

  ls path [watch]

  get path [watch]

  ls2 path [watch]

  若获取根节点下面的所有子节点,使用ls / 命令即可

    查询根目录下的节点


使用 get /查询根节点 内容和属性信息


也可以使用 ls2 / 命令查看


可以看到 子节点数据为3 numChildren属性

若想获取/zk-permanent的数据内容和属性,可使用如下命令:get /zk-permanent 

可以看到 该节点的信息 

更新节点

  使用set命令,可以更新指定节点的数据内容,用法如下

  set path data [version]

  其中,data就是要更新的新内容,version表示数据版本,如将/zk-permanent节点的数据更新为456,可以使用如下命令:set /zk-permanent 456

    

    

set 后  zk-permanent 节点 现在dataVersion已经变为1了,表示进行了更新。

重新get的时候 zk-permanent的值 已经成为 456 设置成功 

 删除节点

  使用delete命令可以删除Zookeeper上的指定节点,用法如下

  delete path [version]

  其中version也是表示数据版本,使用delete /zk-permanent 命令即可删除/zk-permanent节点

    

删除成功 (linux哲学,一个操作没有什么东西出来,就是成功)

可以看到,已经成功删除/zk-permanent节点。值得注意的是,若删除节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除父节点。

摘录文章:https://www.cnblogs.com/halu126/p/7078637.html

摘录文章:https://www.cnblogs.com/leesf456/p/6022357.html













  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值