01.zookeeper安装与基本操作

zookeeper概述

在分布式系统中,每个服务都可看作是一个节点,会产生很多节点的协调问题,如:

  1. 每天的定时任务由谁哪个节点来执行?
  2. RPC调用时的服务发现?
  3. 如何保证并发请求的幂等

ZooKeeper是用于分布式应用程序的协调服务。它公开了一组简单的API,分布式应用程序可以基于这些API用于同步,节点状态、配置等信息、服务注册等信息。zookeeper用于协调各个节点间的工作。

zookeeper安装

1.zookeeper由Java编写,需要有Java的运行环境,需要下载JDK
2.下载:wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/current/apache-zookeeper-3.6.2-bin.tar.gz
2.解压: tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
在这里插入图片描述
3.进入配置文件目录 cd ./apache-zookeeper-3.6.2-bin/conf
4. 拷贝配置文件 cp zoo_sample.cfg zoo.cfg
在这里插入图片描述
zookper配置文件说明,zookeeper默认端口:2181

# zookeeper时间配置中的基本单位 (毫秒)
tickTime=2000
# 允许follower初始化连接到leader最大时长,它表示tickTime时间倍数 即:initLimit*tickTime
initLimit=10
# 允许follower与leader数据同步最大时长,它表示tickTime时间倍数 
syncLimit=5
#zookeper 数据存储目录
dataDir=/tmp/zookeeper
#对客户端提供的端口号
clientPort=2181
#单个客户端与zookeeper最大并发连接数
maxClientCnxns=60
# 保存的数据快照数量,之外的将会被清除
autopurge.snapRetainCount=3
#自动触发清除任务时间间隔,小时为单位。默认为0,表示不自动清除。
autopurge.purgeInterval=1
  1. 启动zookeeper需要进入bin目录: cd …/bin/
    在这里插入图片描述
  2. 启动zookeeper服务端: ./zkServer.sh start
    在这里插入图片描述
    启动成功
  3. 启动客户端连接zookeeper: ./zkCli.sh
    在这里插入图片描述
    连接成功!!

节点的概念

zookeeper 中节点叫znode存储结构上跟文件系统类似,以树级结构进行存储。不同之外在于znode没有目录的概念,不能执行类似cd之类的命令。znode结构包含如下:

  • path:唯一路径
  • childNode:子节点
  • stat:状态属性
  • type:节点类型

节点之下可包含子节点,最后以树级方式程现。每个节点拥有唯一的路径path。客户端基于PATH上传节点数据,zookeeper 收到后会实时通知对该路径进行监听的客户端。
图片

节点属性

使用get -s 路径 指令,可以得到这个节点的详细信息

#创建节点的事物ID
cZxid = 0x385
#创建时间
ctime = Tue Sep 24 17:26:28 CST 2019
#修改节点的事物ID  本节点发生改变
mZxid = 0x385
#最后修改时间
mtime = Tue Sep 24 17:26:28 CST 2019
# 子节点变更的事物ID  子节点的增加或删除
pZxid = 0x385
#这表示对此znode的子节点进行的更改次数(不包括子节点) 子节点增加或删除
cversion = 0
# 数据版本,变更次数
dataVersion = 0
#权限版本,变更次数
aclVersion = 0
#临时节点所属会话ID
ephemeralOwner = 0x0
#数据长度
dataLength = 17
#子节点数(不包括子子节点)
numChildren = 0

节点类型

类型描述
PERSISTENT持久节点
PERSISTENT_SEQUENTIAL持久序号节点
EPHEMERAL临时节点(不可在拥有子节点)
EPHEMERAL_SEQUENTIAL临时序号节点(不可在拥有子节点)

客户端操作

  • ls [-s][-w] [-R] path 列出子节点 -s状态 -R 递归查看所有子节点 -w 添加监听
    在这里插入图片描述

  • create [-s][-e] [-c][-t ttl] path [data][acl] 创建节点。
    -s 创建节点序号 -e 创建临时节点
    创建一个持久节点:
    持久节点会永久保存
    在这里插入图片描述
    创建一个持久序号节点:
    序号节点会自动给节点编号,适合批次创建
    在这里插入图片描述
    创建一个临时节点和临时序号节点:
    临时节点只存在于当前会话,
    在这里插入图片描述

  • delete [-v version] path 删除节点,(不能存在子节点)
    先在/course 创建/course/java 节点
    在这里插入图片描述
    删除/course节点:
    在这里插入图片描述
    删除失败,因为/course节点下有子节点

  • deleteall path 删除路径及所有子节点
    删除/course
    在这里插入图片描述
    删除成功

  • set [-s] [-v version] path data 给节点设置值

  • get [-s][-w] path 查看节点数据 -s 包含节点状态 -w 添加监听
    在这里插入图片描述

  • stat [-w] path 也可以查看节点状态,但不可查看节点数据 -w 添加监听

在这里插入图片描述

其他的操作指令:
close 关闭当前会话
connect host:port 重新连接指定Zookeeper服务
setquota -n|-b val path 设置节点限额 -n 子节点数 -b 字节数
listquota path 查看节点限额
delquota [-n|-b] path 删除节点限额
getAcl [-s] path 查看路径权限
printwatches on|off 是否打印监听事件
quit 退出客户端
history 查看执行的历史记录
redo cmdno 重复 执行命令,history 中命令编号确定
removewatches path [-c|-d|-a] [-l] 删除指定监听
setAcl [-s] [-v version] [-R] path acl 为节点设置ACL权限
sync path 强制同步节点

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值