1、ZK节点数据
Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不行。Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得 Zookeeper 不能用于存放大量的数据,每个节点的存放数据上限为1M。
2、Zookeeper 如何保证分布式数据的一致性特性
Zookeeper 的一些特性和工作原理,包括顺序一致性、原子性、单一视图、可靠性和实时性(最终一致性)。
-
顺序一致性: Zookeeper 保证所有的更新操作都是全局有序的,每个更新都有一个唯一的时间戳(zxid),并且读请求的返回结果中会带有最新的 zxid,确保了更新操作的顺序性。
-
原子性: 对于写请求,Zookeeper 会同时将请求发送给其他 Zookeeper 机器,并在达成一致后才返回成功,保证了写操作的原子性,即要么全部写入成功,要么全部失败。因此, 随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。
-
单一视图: Zookeeper 提供了一个单一视图,即对于所有的客户端,他们看到的数据都是一致的,这也是 Zookeeper 的可靠性和一致性基础之一。
-
可靠性: Zookeeper 的可靠性体现在其提供了高可用和容错性,通过集群机器的增多,可以提高读请求的吞吐,同时保证写请求的可靠性和一致性。
-
实时性(最终一致性): 对于读请求,Zookeeper 允许任意一台机器处理,并且会相对于更新有序,但并不保证实时性,而是保证最终一致性,即数据最终会达到一致状态。
总体来说,Zookeeper 是一个分布式协调服务,通过其特性保证了数据的一致性、可靠性和顺序性,在分布式系统中有着广泛的应用。
3、zab协议
ZAB(Zookeeper Atomic Broadcast)协议是专门为分布式协调服务 Zookeeper 设计的一种支持崩溃恢复的原子广播协议。它包括两种基本模式:崩溃恢复和消息广播。
-
崩溃恢复模式: 当整个 Zookeeper 集群刚启动、Leader 服务器宕机、重启或者网络故障导致不存在过半的服务器与 Leader 服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式。在该模式下,首先会选举产生新的 Leader 服务器,然后集群中的 Follower 服务器开始与新的 Leader 服务器进行数据同步。一旦超过半数的机器与新的 Leader 服务器完成数据同步,集群就会退出恢复模式,进入消息广播模式。
-
消息广播模式: 一旦集群中超过半数的机器与新的 Leader 服务器完成数据同步,集群就会退出恢复模式进入消息广播模式。在这个模式下,Leader 服务器开始接收客户端的事务请求,并生成事务提案来处理这些请求。
ZAB 协议通过这两种模式,确保了在 Zookeeper 集群中保持数据的一致性和可靠性。崩溃恢复模式确保在发生故障或初始启动时,能够重新选举 Leader,并进行数据同步;消息广播模式则确保了在集群正常运行时,能够处理客户端的事务请求并保持数据的一致性。
标签:面试题,Java,请求,Zookeeper,12Zookeeper,集群,一致性,服务器,Leader From: https://www.cnblogs.com/raorao1994/p/18109441