Zookeeper学习初整理

ZooKeeper数据模型

zookeeper的数据模型,在结构上和标准文件系统非常相似,拥有一个层次的命名空间,采用树形层次结构,zookeeper树中的每个节点被称为-Znode

1:Znode兼具文件和目录两种特点。既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分,并可以具有子Znode。用户Znode具有增、删、改、查等操作(权限允许的情况下)

2:Znode具有原子性操作,读操作将获取与节点相关的所有数据,写操作也将替换掉节点的所有数据。每一个节点都拥有自己的ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作

3:Znode存储数据大小有限制,zookeeper虽然可以关联一些数据,但并没有被设计为常规的数据库或者大数据存储,相反的是它用来管理调度数据,如分布式应用中配置文件信息、状态信息、汇集位置等。这些数据的共同特性就是它们都是很小的数据,通常以KB为大小单位。zookeeper的服务器和客户端都被设计为严格检查并限制每个Znode的数据大小至多1M:,常规使用中应远小于此值

4:Znode通过路径引用,如同unix中的文件路径。路径必须是绝对,因此它们必须由斜杆字符开头。必须是唯一的,每一个路径只有一个表示,因此这些路径不能改变。在zookeeper中,路径由unicode字符组成,并且有一些限制。"/zookeeper"用以保存管理信息,如关键配额信息等

节点类型

Znode有两种,分别为临时节点和永久节点,节点的类型在创建时即被确定,并且不能改变。

临时节点:该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时节点将被自动删除,也可手动删除。临时节点不允许拥有子节点

永久节点:该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作时,才能被删除

Znode序列化特性:如果创建的时候指定,该Znode的名字后面会自动追加一个不断增加的序列号。序列号对于此节点的父节点来说是唯一的,这样便会记录每个子节点创建的先后顺序。格式为"%10d"(10位数字,没有数值和数位用0补充,如"0000000001")

Zookeeper watch机制

1:zookeeper实现分布式进程的状态(Znode的Data、Children)共享时,基于性能的考虑采用了类似的异步非阻塞的主动通知模式即Watch机制,使得分布式进程之间的"共享状态通信"更加实时高效,这也Zookeeper的主要任务决定的-协调

2:watch是一次性的,每次都需要重新注册,并且客户端在会话异常结束时不会收到任何通知,而快速重新连接时仍不影响接受通知

3:watch的回调执行都是顺序执行的,并且客户端在没有收到关注数据的变化事件通知之前是不会看到最新的数据,需要注意不要在watch回调逻辑中阻塞整个客户端的watch回调

4:watch是轻量级的,watchEvent是最小的通信单元,结构上只包含通知状态、事件类型和节点路径。zookeeper服务端只会通知客户端发生了什么,并不会告诉具体内容

Zookeeper 状态

Disconnected:客户端是断开连接的状态,不能连接服务集中的任意一个

SyncConnected:客户端是连接状态,连接其中的一个服务

AuthFailed:鉴权失败

ConnectedReadOnly:客户端连接只读的服务器

SaslAuthenticated:SASL认证

Expired:服务器已经过期了该客户端的Session

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值