ZooKeeper 技术内幕:版本
2018-01-10 21:49
309 查看
今天借助ZK实现领导者选举,画时序图过程中发现,准确控制一次选举从开始到结束,非常得困难。甚至准备在ZK额外记录一系列的状态信息来确定选举开始和结束的边界,逻辑复杂且难以100%保证状态一致。
细想一下,是缺少一个唯一标记集群变化的标识。来处理多次变化重叠、单次变化各节点是否完成同步。
发现忽略了ZK带给我们的一个很有用的特性,可以使用ZNode的版本来标记一次集群节点的变化。ZK不仅有节点数据变更的版本信息还有一个父节点版本(感知子节点的增删变化)。
版本号,都有哪些?
版本号,如何修改?
版本号,什么作用?
version:数据内容,版本
cversion:子节点列表,版本
aversion:ACL 权限,版本
特别说明:
ZK 中
版本自增:每次变化,版本就加一;
补充:乐观锁事务,分为 3 个典型阶段:
数据读取
写入校验
数据写入
ZooKeeper-Distributed Process Coordination 第2章 2.1.4
from: http://ningg.top/zookeeper-lesson-7-zookeeper-version/
细想一下,是缺少一个唯一标记集群变化的标识。来处理多次变化重叠、单次变化各节点是否完成同步。
发现忽略了ZK带给我们的一个很有用的特性,可以使用ZNode的版本来标记一次集群节点的变化。ZK不仅有节点数据变更的版本信息还有一个父节点版本(感知子节点的增删变化)。
背景
ZK 中,ZNode 都有一个版本号,
版本号,都有哪些?
版本号,如何修改?
版本号,什么作用?
版本号
版本号,都有哪些?
每个 ZNode 都有 3 类版本信息:version:数据内容,版本
cversion:子节点列表,版本
aversion:ACL 权限,版本
特别说明:
ZK 中
版本就是
修改次数:即使修改前后,内容不变,但
版本仍会
+1:
version=0表示节点创建之后,修改的次数为 0。
cversion子节点列表:ZNode,其中 cversion 只会感知
子节点列表变更信息,新增子节点、删除子节点,而不会感知子节点数据内容的变更。
版本号,如何修改?
下述情况,版本号会自动更新:版本自增:每次变化,版本就加一;
版本号,什么作用?
目标:解决 ZNode 的并发更新问题,实现 CAS(Compare And Switch)乐观锁。
补充:乐观锁事务,分为 3 个典型阶段:
数据读取
写入校验
数据写入
参考资料
从Paxos到Zookeeper分布式一致性原理与实践 第7章 7.1.3ZooKeeper-Distributed Process Coordination 第2章 2.1.4
from: http://ningg.top/zookeeper-lesson-7-zookeeper-version/
相关文章推荐
- 初探 ZooKeeper 技术内幕
- Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源码实现
- Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源码实现
- Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源码实现
- Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源码实现
- zookeeper技术内幕-数据与存储
- Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源代码实现
- Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源代码实现
- Spark技术内幕:Master基于ZooKeeper的HighAvailability(HA)源码实现
- Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源码实现
- spring技术内幕之IoC容器的实现
- 魅族 C++ 微服务框架技术内幕揭秘
- VC++技术内幕(第四版)笔记(第9章)
- 胡百敬老师为《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》一书中文版所作的推荐序
- 嵌入式系统 Boot Loader 技术内幕
- VC++技术内幕(二)
- MFC执行期类型识别与动态创建技术内幕
- zookeeper安装mac版本
- VC++技术内幕(第四版)笔记(第14章)
- spring技术内幕6-IoC容器的高级特性