zookeeper 特性和节点说明

一 zookeeper 概要、背景及作用

zookeeper 产生背景
项目从单体到分布式转变之后,将会产生多个节点之间协同的问题。如:
1.RPC调用时服务的注册与发现 、上线、下线
2.如何保证并发请求时接口的幂等性
3.每天的定时任务由哪个节点执行
等等。。。
这些问题可以同一归纳为多节点协调问题,如果靠节点自身进行协调这是非常不可靠的,性能也相对比较差。必须由一个独立的服务做协调工作,它必须可靠,而且保证性能。至此我们的zookeeper应运而生

zookeeper 概要
zookeeper 适用于分布式应用程序的协调服务,它公开了一组API,分布式应用可以基于这些API用于同步,节点状态、配置、服务注册等信息。是由java编写,支持java与C两种语言的客户端
在这里插入图片描述
znode 节点
zookeeper 中基本单元叫节点,节点之下包含子节点,最后以树级方式呈现,每个节点拥有唯一的路径path。客户端基于path上传的节点数据,zookeeper收到后会实时通知对该路径上监听的客户端。
在这里插入图片描述

二 安装与配置

部署与常规配置
下载地址:zookeeper
zookeeper需要JVM环境 默认端口为2181
安装启动几个注意点
1.conf下zoo_sample.cfg 名字更换为zoo.cfg
在这里插入图片描述
2.需要再JVM环境中启动
3.启动命令 ./bin/zkServer.sh start
4.客户端进入命令
在这里插入图片描述
配置文件参数说明

# The number of milliseconds of each tick
#zookeeper时间配置的基本单位(毫秒)
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
#允许follower初始化连接到leader最大时长,它标识ticktime的倍数 即:initLimit*tickLimit
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
#允许follower与leader数据同步的最大时长 
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
#数据存储目录
dataDir=../data
# the port at which the clients will connect
#端口号
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#单个客户端与zookeeper最大并发连接数
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#保存的数据快照数量 之外的将会被清除
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#自动触发清除任务时间间隔,小时为单位,默认为0,表示不自动清除
#autopurge.purgeInterval=1

常用命令

列出子节点   ls /
创建节点 (永久)  create /sanguo  "sanguo"
查看节点  get /sanguo
创建子节点  create /sanguo/shuguo   "刘备"
删除节点  delete  /sanguo/shuguo     (不能递归删除)
删除所有节点  deleteall  /sanguo
查看历史命令   history    配和redo使用
		[zk: localhost:2181(CONNECTED) 20] history
		10 - clear
		11 - ls /
		12 - ls
		13 - get /shilei
		14 - set /shilei shilei is good man
		15 - set /shilei "shilei is good man"
		16 - get /shilei
		17 - get /zookeeper
		18 - create /shilei/sanguo "刘备"
		19 - get /shilei/sanguo
		20 - history
		[zk: localhost:2181(CONNECTED) 21] redo 11
		[zookeeper, shilei]


三 节点介绍

zookeeper 中节点叫znode存储结构上和文件系统类似,以树形结构进行存储,不同之处在于znode没有目录的概念,不能执行类似与cd之类的命令,znode结构包含如下:
path:唯一路径
childNode : 子节点
stat:状态属性
type:节点类型

1.节点类型

类型描述
PERSISTENT持久节点
PERSISTENT_SEQUENTIAL持久序号节点 create -s
EPHEMERAL临时节点(不可再拥有子节点) create -e
EPHEMERAL_SEQUENTIAL临时序号节点(不可再拥有子节点)create -e -s

2.节点属性

[zk: localhost:2181(CONNECTED) 5] get /ll0000000001
ll     //节点的值
cZxid = 0x16    //创建节点时的事务id
ctime = Sun Nov 17 04:14:13 CST 2019   //  接待你的创建时间
mZxid = 0x16    //最后数据变更时 事务id
mtime = Sun Nov 17 04:14:13 CST 2019  //最后数据变更时间
pZxid = 0x16   // 子节点 最后一次增加或者删除 的事务id
cversion = 0   //  子节点变更次数
dataVersion = 0    //版本号  即当前节点数据更新几次
aclVersion = 0   //  权限变化
ephemeralOwner = 0x1000067edb80007    //代表是一个临时节点  值为创建该节点的session值
dataLength = 2   //数据长度
numChildren = 0  //有几个子节点

添加监听

命令描述
ls /path watch监听子节点的变化(增、删)
get /path watch监听节点数据的变化
stat /path watch监听节点属性的变化

acl权限设置
ACL全程为Access Control list (访问控制列表) ,用于控制资源的访问权限,zookeeper使用acl来控制对其znode的访问,基于scheme:Id:permission的方式进行权限控制。scheme表示授权模式,id模式对应的值,permission即具体的增删改权限位

scheme 权限位

方案描述
world开放模式 ,world表示全世界都可以访问(这是默认设置)
ipip模式,限定客户端ip访问
auth用户名密码认证模式,只有在会话中添加了认证才能访问
digest与auth类似,区别时zuth用的是明文,而digest用sha-1+base64加密后的密码

permission权限位

权限位权限描述
cCREATE可以创建一个子节点
dDELETE可以删除一个子节点
rREAD可以读取子节点数据以及显示子节点列表
wWRITE可以设置节点数据
aADMIN可以设置节点访问控制列表权限

acl相关命令

命令使用方式描述
getAclgetAcl /path读取ACL权限
setAclsetAcl /shilei world:anyone:rwa设置ACL权限
addauthaddauth添加认证用户
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值