ZooKeeper安装与配置集群( 三 )


崩溃恢复:
当主节点崩溃时,ZAB协议会自动触发崩溃恢复机制 。在这种情况下,崩溃的主节点会将其数据复制到备用节点上,并重新选举一个新的主节点 。这样,即使主节点崩溃,整个集群仍然能够保持数据一致性 。
总结: ZAB协议通过原子广播和崩溃恢复两个机制来确保集群中的数据一致性和可靠性 。这使得成为分布式环境下进行高可用性和可靠性部署的理想选择 。
数据模型
的数据模型主要包含以下几个部分:
1、Name Space:的数据模型类似于文件系统,使用 Name Space 来表示不同的数据对象 。每个 Name Space 由一组唯一的标识符组成,称为节点(Node) 。节点是树中的基本单位,每个节点都有一个唯一的数字标识符 。
2、Data Store: 的数据存储在称为数据存储(Data Store)的节点中 。每个数据存储节点都是一个文件,用于存储数据和元数据信息 。
数据存储节点通常包含以下几个部分:
a. Data:数据存储节点中存储的是数据对象,例如文件、哈希表等 。
b. :数据存储节点中还包含元数据信息,例如文件权限、所有者等 。
c. ACL:ACL(访问控制列表)是一个用于定义节点间权限的数据结构 。在中,ACL 用于限制不同用户对节点的访问权限 。
3、Node: 树中的每个节点都由一个唯一的数字标识符组成,称为 Znode 。Znode 是树中的基本单位,代表着一个数据对象 。
Znode 包含以下几个部分:
a. Stat:Znode 包含一个元数据信息,例如文件大小、修改时间等 。
b. Data:Znode 存储着实际的数据对象 。
c. :Znode 可以包含子节点,用于存储子数据对象或者其他 Znode 。
4、Zxid:Zxid 是一个全局唯一的标识符,用于确保每个事件在树中的唯一性 。Zxid 用于生成序列号,以便在事件通知和领导者选举过程中使用 。
注: 的数据模型通过使用树形结构来组织数据,每个节点代表着一个数据对象,节点之间通过父子关系相互关联 。这种结构保证了在分布式系统中所有数据的一致性和事件驱动的行为 。
节点四大类临时节点:临时节点用于存储会话数据和事件,它们的生命周期与客户端会话绑定,一旦会话结束,这些节点将被自动删除 。持久节点:持久节点用于存储长期数据,例如状态信息、配置数据等 。它们具有永久性,即使客户端会话断开,节点也会保留在中 。顺序节点:顺序节点是根据预定顺序链接在一起的一组节点 。它们用于实现分布式锁机制,当多个客户端请求同一个资源时,只有一个客户端可以获得锁并进行操作,其他客户端需要等待 。临时顺序节点:临时顺序节点是一种特殊类型的顺序节点,它们具有临时性和顺序性 。临时顺序节点在满足特定条件时会转换为永久顺序节点,而在此期间它们可以被多个客户端共享 。节点类型持久节点():是中最常见的节点类型,它们在服务器上永久存在,直到被删除 。这些节点用于存储数据和元信息,如成员关系、权限等 。临时节点():临时节点在服务器上存活的时间通常较短,它们用于创建临时数据和关系,例如订阅关系或发布/订阅关系 。临时节点在建立后会被快速删除,以确保节点状态的可恢复性 。顺序节点():顺序节点是按照顺序创建的,它们用于在分布式环境中存储有序数据 。
顺序节点在建立后会按照预定的顺序被引用和访问 。分区节点():分区节点用于将实例分成多个子集,每个子集可以独立管理 。分区节点可以提高的可扩展性和容错性 。聚合节点():聚合节点用于将多个实例的数据合并为一个大的聚合实例 。聚合节点可以减少网络带宽的使用,提高数据传输速度 。持久顺序节点( ):持久顺序节点是介于持久节点和顺序节点之间的一种节点类型 。它们在建立后会保留数据和元信息,直到被删除 。这些节点通常用于存储有序数据,如任务或事件 。容器节点():容器节点是专门用于存储和管理共享资源的节点 。它们可以跨多个实例存在,提高了资源的可共享性和管理效率 。同步节点():同步节点在创建时就会一直保持同步状态,它们不能接收新的事务,只能接收崩溃重试事务 。同步节点主要用于测试和开发环境下的事务处理 。异步节点():异步节点在创建时不会保持同步状态,它们可以接收新的事务并进行处理,但是事务的提交和回滚是异步的 。异步节点主要用于实时性要求较高的场景,如视频流或实时通信应用 。