Zookeeper系列(4)--ZK概述,数据模型,节点特性,Watcher机制、ACL及数据存储

如题所述

Zookeeper的概述与基础概念

Zookeeper是用于提供高效、可靠的分布式协调服务的工业解决方案,主要应用于大型分布式系统。它通过ZAB协议实现了一种主备模式的架构以保持数据一致性,无需直接采用Paxos算法。

Zookeeper提供了一套高性能、高可用且具有严格顺序访问控制能力的分布式协调服务。其服务包括统一命名服务、配置管理和分布式锁等。用于解决分布式数据一致性问题,Zookeeper采用了ZAB(Zookeeper Atomic Broadcast)协议。Zookeeper作为Google Chubby的开源实现,具有高可用性和数据一致性,广泛应用于负载均衡、命名服务、分布式锁、集群管理和master选举等场景。

Zookeeper可以确保以下一致性要求:

1. 顺序一致性:同一客户端发起的事务请求按照发起顺序应用至ZooKeeper中。

2. 原子性:所有事务请求在集群中所有机器上应用状态一致,要么全部成功,要么全部失败。

3. 单一视图:客户端无论连接哪个服务器,都看到相同的服务端数据模型。

4. 可靠性:事务成功应用后,其引起的服务端状态变更保持不变,除非有其他事务变更。

5. 实时性:客户端最终能够读取到事务变更后的最新数据状态,但不保证即时性。

Zookeeper集群角色包括Leader、Follower和Observer。Leader处理数据更新,Follower和Observer提供读服务,但Follower不参与Leader选举和写操作的“过半写成功”策略。集群数量通常为奇数,以确保容灾能力。

Zookeeper的基本架构包括:每个Server在内存中存储数据;启动时选举Leader;Leader处理数据更新;更新成功需大多数Server内存中成功修改。每个znode有生命周期,类型分为持久、临时或顺序。

Zookeeper数据模型采用层次化目录结构,类似Unix文件系统路径。节点特性包括生命周期、类型(持久、临时或顺序)和状态信息,如创建时间、修改时间、版本等。

Zookeeper通过Watcher机制实现分布式通知,允许客户端注册监听事件,当服务端事件触发时,客户端接收到通知。Watcher机制提供了一种异步获取数据的机制。

ACL机制保障数据安全,用于控制资源访问权限,包括读写权限、创建、删除节点等。Zookeeper中的ACL由scheme、id和permission三部分组成,分别表示授权策略、用户和权限。

在内存模型中,Zookeeper将数据存储在内存数据库中,包括树结构的所有节点、数据、ACL信息,同时定时将数据存储到磁盘上。数据树(DataTree)是核心,存储所有节点路径、数据、状态等,DataNode是最小存储单元,包含节点数据、ACL、父节点和子节点列表。

Zookeeper数据持久化通过事务日志和数据快照实现,事务日志记录操作,数据快照记录全量数据内容。Zookeeper通过过半随机策略决定何时进行数据快照,以避免集群性能影响。在服务器启动时,从磁盘加载快照文件恢复数据。

Zookeeper之所以成为经典的分布式服务框架,主要得益于其高性能、高可用性和确保数据一致性的能力。在后续文章中,我们将详细解释其底层一致性协议——ZAB协议。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网