没有合适的资源?快使用搜索试试~ 我知道了~
首页ZooKeeper 基本概念、使用方法、实践场景
资源详情
资源评论
资源推荐

ZooKeeper 基本概念、使法、实
践场景
开篇
本使!"#$%&!作为!'(()**+*,!运环境,使!-./.!作为编程语。开
始之前,我们出本涉及的具和组件,并约定版本。请下表。
运环境 0%1%$2%!34567
'(()**+*, 857533
-9) 35:56;3<3
=,.>?* 753
@%,.2(, 75656 '(()**+*,!-./.!客户端库
ZooKeeper 基本概念
'(()**+*,!是向分布式应的协调服务,其实现树形结构的数据模型
(与件系统类似),并且提供简洁的编程原语。'(()**+*,!能够作为
基础,于构建层级的分布式服务。
'(()**+*,!是分布式的,具备性能、可的特点。
如上架构图所示,'(()**+*,!集群中包括:
A5! "*.>*,:提供!“读”!B!“写”!服务("*.>*,!由集群全部机通
过“"*.>*,!选举”产)。
C5! D(??(E*,:集群中!“"*.>*,”!的其他节点。

集群的机相互通信,基于!'(()**+*,!的实现机制,只要超过半数
的机正常,整个集群即能够正常提供服务。
'(()**+*,!数据全部于内存中存储,于硬盘中落地数据快照、事务志。
ZooKeeper 数据模型
ZNode
'(()**+*,!实现树形结构的数据模型,即为!'(()**+*,!提供的!“命名空
间”,与件系统类型。“命名空间”由“径”唯标示,由“F”间隔的每
层级,“树形结构”!的任意节点,即为!'G(>*。
'(()**+*,!的!'G(>*,全部使“绝对径”,与件系统所同的是,
'G(>*!既允许存储数据,亦能够建级!'G(>*。
需要说明,'G(>*!存储的数据,限定为!3H。
ZNode 类型
通常情况,'G(>*!永久存储于!'(()**+*,,直到被主动删除。此外,
'(()**+*,!允许客户端创建!“临时”(I+J*K*,.?)'G(>*,若客户端与
'(()**+*,!的连接中断,临时!'G(>*!将动删除。并且,临时!'G(>*!
允许建级!'G(>*。
'(()**+*,!持“顺序”(L*M%*$N*)'G(>*,顺序!'G(>*!创建时,
'(()**+*,!将动添加“增数字”作为后缀(“增数字”由级!'G(>*
通过!7!字节有符号整数维护)。
ZNode Stat
除存储的数据,'G(>*!包含称为!L2.2!的数据结构,于存储!'G(>*
的属性信息,主要包括:
A5! N'&#>!F!K'&#>:'G(>*!创建!F!最后新的!'&#>
C5! N2#K*!F!K2#K*:'G(>*!创建!F!最后新的时间(O$#&!时间,毫秒)
P5! >.2.Q*,R#($!:'G(>*!数据版本
S5! >.2."*$T2J!:'G(>*!存储的数据度

U5! $%K@J#?>,*$!:级!'G(>*!的数
V5! 其他关于!W@"、级!'G(>*!的信息
关于!'&#>:所有提交到!'(()**+*,!的事务,都会被标记唯的
'(()**+*,!X,.$R.N2#($!Y>。
ZooKeeper Session
'(()**+*,!L*RR#($(会话),即为!'(()**+*,!客户端与服务端交互的通
道。概述,客户端和服务端的!X@Z!连接即为!L*RR#($,'(()**+*,!抽
象多的会话状态。
L*RR#($!于!'(()**+*,!服务端,以!L*RR#($Y>!作为唯标示,同时,
'(()**+*,!持客户端使!L*RR#($Y>!进“L*RR#($!复”(需要同时提
供!L*RR#($Z.RRE>)。
ZooKeeper Session 状态维护
'(()**+*,!客户端对象创建时,L*RR#($!即进!@[GGI@XYG=!状态,当
客户端与服务端(集群的任意节点)完成连接,即进!@[GGI@XI9!状
态。
客户端主动关闭!L*RR#($!前,通过“跳”维护!L*RR#($!有效性,若连接中
断,'(()**+*,!客户端将尝试重新连接(再次进!@[GGI@XYG=!):
A5! 若在“L*RR#($!超时时间”内,连接重新建,L*RR#($!继续有效,再
次进!@[GGI@XI9;
C5! 否则,服务端将标记!L*RR#($!过期(即使连接最终重新建),进
清(如:临时!'G(>*!删除),L*RR#($!最终进!@"[LI!状态。
L*RR#($!是否过期,完全由!'(()**+*,!服务端维护。对于!'(()**+*,!客
户端,仅当!L*RR#($!过期,才应当重新创建客户端对象。
多个客户端使相同的!L*RR#($Y>!与!L*RR#($Z.RRE>!“连接复”,可能出
现“L*RR#($H(/*>I&N*+2#($”,请参阅:'(()**+*,!Z,(T,.KK*,\R
=%#>*。
ZooKeeper Watch

对于全部的“读”操作,'(()**+*,!允许客户端于!'G(>*!设置!].2NJ,当
'G(>*!变时,].2NJ!将被触发并且通知到客户端(即!].2NJ*,)。
].2NJ!是!“次性”!的,].2NJ!被触发时即被清除。
].2NJ“异步地”通知到客户端,“通知内容”包含!'G(>*!变后的数
据,需要由客户端读取。
由!'(()**+*,!确保,事件到客户端的通知,严格“按顺序”进(事务于
'(()**+*,!中的顺序)。此外,当!].2NJ!被触发时,设置!].2NJ!的客
户端,接收到通知前,法获取变后的数据。
ZooKeeper Watch 事件类型
我们假设判断!'G(>*!是否存在、获取!'G(>*!数据、获取!'G(>*!级
'G(>*!的法分别为!*&#R2R()、T*29.2.()、T*2@J#?>,*$()。
A5! 创建事件:*&#R2R()!设置的!].2NJ!能够被触发;
C5! 删除事件:*&#R2R()、T*29.2.()、T*2@J#?>,*$()!设置的!].2NJ!能够被
触发;
P5! 变事件:T*29.2.()!设置的!].2NJ!能够被触发;
S5! 级!'G(>*!事件:!T*2@J#?>,*$()!设置的!].2NJ!能够被触发。
对于单的!].2NJ!对象(如,回调函数),由单变引起的事件,
].2NJ!对象将被调仅仅被调次,即使由多个“读”进!].2NJ!设
置。
ZooKeeper ACL
'(()**+*,!通过!W@"!控制!'G(>*!的访问权限(默认情况,'G(>*!访问
权限控制),权限维度包括:
A5! @^IWXI:创建!'G(>*;
C5! ^IW9:获取!'G(>*!数据及其级!'G(>*;
P5! ]^YXI:'G(>*!数据写;
S5! 9I"IXI:删除!'G(>*;
U5! W9HYG:权限设置。
'(()**+*,!持多种权限模式,最常的!9#T*R2!模式,类似于!%R*,$.K*
剩余16页未读,继续阅读



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0