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

原文地址:https://www.cnblogs.com/1439107348s/p/14465885.html