zookeeper开发手册
2016-01-15 18:04:33 49 举报
AI智能生成
Apache Zookeeper开发手册
作者其他创作
大纲/内容
zookeeper开发手册
数据模型
节点命名
由斜线分开的绝对路径
. ..不能单独作为相对路径
znodes
存储内容
数据
访问权限
版本号
标记数据和访问权限的变化
通过版本号和时间戳验证缓存状态,调整更新
watches
客户端设置watch
znode发生变化触发watch然后清除watch
watch被触发,zookeeper给客户端发送通知
数据存取
原子操作
读操作
读取znode所有数据位
写操作
替换所有数据
ACL
访问权限控制表
存储对象
coordination data(协调数据)
配置文件
状态信息
临时节点(Ephemeral Nodes)
依赖创建它们的session,session结束节点被销毁
不允许创建子节点
create -e path data acl
序列节点
命名不唯一
zookeeper提供单调递增计数作为路径结尾,计数对父znode唯一
计数格式
%010d
create -s path data acl
时间记录
zxid(zookeeper transaction id)
version numbers
dataVersion
数据修改版本数
aclVersion
权限修改版本数
cVersion
子节点修改版本数
ticks
Real time
每次znode创建或改动时候将时间戳记录到状态结构中
znode状态结构
czxid
znode创建产生的zxid
mzxid
znode最后一次修改的zxid
ctime
znode创建的时间的绝对毫秒数
mtime
znode最后一次修改的绝对毫秒数
znode上数据的修改数
znode的ACL修改数
cversion
子节点修改数
ephemeralOwner
临时节点的所有者的session id。如果此节点非临时节点,该值为0
dataLength
znode的数据长度
numChildren
znode子节点数
Sessions
连接
客户端创建一个handle和服务端建立session
服务端返回客户端session id/session password
网络断开重新连接
客户端连接其他服务器,并发送session id/session password
服务器校验session id/session password
session timeout
session超时最小为2个ticktime,最大为20个 ticktime
客户端发送请求会使session保持活动状态。客户端会发送ping包(译者注:心跳包)以保持session不会超时。
3.2新增
ip:port后增加字符串
指明客户端命令运行的根目录地址,所有路径都相对于根目录来设置
这一特性在多用户环境下非常好用,每个使用zookeeper服务的用户可以设置不同的根目录。
SessionMovedException
一致性保证
顺序一致性
客户端的更新会按照它们发送的次序排序
原子性
更新失败或成功,都不会出现半个结果
单独系统镜像
不管客户端连哪个服务器,它看来都是同一个
可靠性
一旦更新生效,它就会一直保存到下一次客户端更新
时效性
不存在的一致性保证
Watches
定义
watch事件是一次性触发的,发送到客户端的。在监视的数据 发生变化时产生watch事件
设置watch方法
getData
exists
getChildren
关键点
一次性触发
2.节点/znode1发生数据变化或删除
3.客户端将收到/znode1的watch事件
4./znode1继续发生改变,不会再有watch发送
保证顺序
watch是异步发送给watchers的
zookeeper提供一种保证顺序的方法
dataWatch&childWatch
产生
getData()和exists()产生data watch
getChildren()引起child watch
触发(事件成功)
setData()触发data watch
create()触发data watch和它父节点上的child watch
delete()触发data watch和当前节点的child watch
watch维护
watch可靠性保证
watch与其他事件、watch、异步回复保持有序,Zookeeper客户端库确保任何分发都是有序的
客户端会在某个监视的znode数据更新之前看到这个znode的watch事件
watch事件的顺序由Zookeeper服务端观察到的更新顺序决定
注意事项
1.如果你收到watch事件后还想继续得到后续更改的通知,你需要再生成(设置)一个watch
2.znode会在收到事件和再次设置新事件之间发生了多次修改
3.使用session事件进入安全模式
ACL访问权限
实现方式
类unix的文件权限:用不同 位来代表不同的操作限制和组限制
一个由ACL指定的id集合和其相关联的权限
特点
一个ACL只从属于一个特定的znode
ACL权限不具有递归性
支持插件式认证方式
权限支持类型
CREATE
允许创建子节点
READ
允许获得节点数据并列出所有子节点
WRITE
允许设置节点上的数据
DELETE
允许删除子节点
ADMIN
允许设置权限
内建ACL模式
world
有独立id,anyone,代表任何用户
auth
不使用任何id,代表任何已经认证过的用户
digest
ip
用客户端的ip作为ACL ID标识。ACL表达式的格式为addr/bits,addr中最有效的位匹配上主机ip最有效的位
收藏
0 条评论
回复 删除
下一页