ZooKeeper的基本概念

本文深入讲解了ZooKeeper集群的工作机制,包括集群角色如Leader、Follower和Observer的区别,客户端与服务器间的会话(Session)机制,数据节点(Znode)的概念及其类型,版本控制方式以及Watcher监听器的功能。同时,还介绍了ZooKeeper提供的ACL权限控制系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集群角色、会话、数据节点、版本、watcher、ACL权限控制


集群角色:

Leader,Follower,Observer

Leader服务器是整个ZooKeeper集群工作机制中的核心。

Follower服务器是ZooKeeper集群状态的跟随者。

Observer服务器充当一个观察者。

Leader、Follow设计模式

Observer设计模式。


会话:

客户端和ZooKeeper服务器之间的连接,ZooKeeper中的会话叫Session,客户端依靠与服务器建立一个TCP长连接来维持一个Session,客户端在启动的时候首先会与服务器建立一个TCP连接,通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能向ZK服务器发送请求并获得响应。


数据节点:

ZooKeeper中的节点有两类:

1.集群中的一台机器成为一个节点;

2.数据模型中的数据单元Znode,分为持久节点和临时节点

ZooKeeper的数据模型是一棵树,树的节点就是Znode。


版本:

version:当前数据节点数据内容的版本号。

cversion:当前数据节点子节点的版本号。

aversion:当前数据节点ACL变更版本号。

悲观锁和乐观锁:

悲观锁又称悲观并发锁,是数据库中非常严格的锁策略,具有强烈的排他性,能够避免不同事务对同一数据并发更新造成的数据不一致性,在上一个事务没有完成之前,下一个事务不能访问相同的资源,适合数据更新竞争非常激烈的场景。

乐观锁:悲观锁认为事务访问相同数据的时候一定会出现相互干扰,所以简单粗暴地使用排他访问的方式,而乐观锁认为不同事务访问相同资源是很少出现相互干扰的情况,因此在事务处理期间不需要进行并发控制,当然乐观锁也是排它锁,它还是有并发控制。对于数据库通常的做法是在每个表中增加一个version版本字段,事务修改数据之前先读数据,当然版本号也顺势读取出来,然后把这个读取出来的版本号加入到更新语句的条件中。


Watcher:监听器
ZooKeeper允许用户在指定节点注册一些Watcher,当数据节点发生变化时,ZooKeeper服务器会发送这些变化给感兴趣的客户端。


ACL权限控制:
Access Control Lists的简写,ZooKeeper采用ACL策略来进行权限控制。有以下权限:

CREATE:创建子节点的权限

READ:获取节点数据和子节点列表的权限
WRITE:更新节点数据的权限

DELETE:删除子节点的权限
ADMIN:设置节点ACL的权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值