Java面试题-12Zookeeper

1、ZK节点数据

Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不行。Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,种特性使得 Zookeeper 不能用于存放大量的数据,每个节点的存放数据上限为1M

2、Zookeeper 如何保证分布式数据的一致性特性

Zookeeper 的一些特性和工作原理,包括顺序一致性、原子性、单一视图、可靠性和实时性(最终一致性)。

  1. 顺序一致性: Zookeeper 保证所有的更新操作都是全局有序的,每个更新都有一个唯一的时间戳(zxid),并且读请求的返回结果中会带有最新的 zxid,确保了更新操作的顺序性。

  2. 原子性: 对于写请求,Zookeeper 会同时将请求发送给其他 Zookeeper 机器,并在达成一致后才返回成功,保证了写操作的原子性,即要么全部写入成功,要么全部失败。因此, 随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。

  3. 单一视图: Zookeeper 提供了一个单一视图,即对于所有的客户端,他们看到的数据都是一致的,这也是 Zookeeper 的可靠性和一致性基础之一。

  4. 可靠性: Zookeeper 的可靠性体现在其提供了高可用和容错性,通过集群机器的增多,可以提高读请求的吞吐,同时保证写请求的可靠性和一致性。

  5. 实时性(最终一致性): 对于读请求,Zookeeper 允许任意一台机器处理,并且会相对于更新有序,但并不保证实时性,而是保证最终一致性,即数据最终会达到一致状态。

总体来说,Zookeeper 是一个分布式协调服务,通过其特性保证了数据的一致性、可靠性和顺序性,在分布式系统中有着广泛的应用。

 3、zab协议

ZAB(Zookeeper Atomic Broadcast)协议是专门为分布式协调服务 Zookeeper 设计的一种支持崩溃恢复的原子广播协议。它包括两种基本模式:崩溃恢复和消息广播。

  1. 崩溃恢复模式: 当整个 Zookeeper 集群刚启动、Leader 服务器宕机、重启或者网络故障导致不存在过半的服务器与 Leader 服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式。在该模式下,首先会选举产生新的 Leader 服务器,然后集群中的 Follower 服务器开始与新的 Leader 服务器进行数据同步。一旦超过半数的机器与新的 Leader 服务器完成数据同步,集群就会退出恢复模式,进入消息广播模式。

  2. 消息广播模式: 一旦集群中超过半数的机器与新的 Leader 服务器完成数据同步,集群就会退出恢复模式进入消息广播模式。在这个模式下,Leader 服务器开始接收客户端的事务请求,并生成事务提案来处理这些请求。

ZAB 协议通过这两种模式,确保了在 Zookeeper 集群中保持数据的一致性和可靠性。崩溃恢复模式确保在发生故障或初始启动时,能够重新选举 Leader,并进行数据同步;消息广播模式则确保了在集群正常运行时,能够处理客户端的事务请求并保持数据的一致性。

4、Zookeeper 中节点类型

这些描述是关于 Zookeeper 中节点类型的基本概念,这些节点类型对于分布式系统中的协调与通知非常重要。

  1. PERSISTENT(持久节点):这种节点在 Zookeeper 上一直存在,除非被手动删除。即使客户端会话结束或断开连接,该节点也不会被删除。

  2. EPHEMERAL(临时节点):临时节点的生命周期与客户端会话绑定。当创建这样的节点的客户端会话失效时(不一定是连接断开,而是会话失效),这些节点会被自动移除。

  3. PERSISTENT_SEQUENTIAL(持久顺序节点):与持久节点类似,但增加了顺序属性。节点名后会追加一个由父节点维护的自增整型数字,以确保节点在创建时按顺序排列。

  4. EPHEMERAL_SEQUENTIAL(临时顺序节点):与临时节点类似,但也增加了顺序属性。节点名后会追加一个由父节点维护的自增整型数字,以确保节点在创建时按顺序排列。

这些节点类型在构建分布式系统时非常有用,例如用于存储配置信息、服务注册与发现、分布式锁等。通过这些节点类型,可以实现诸如节点监控、任务调度等功能。

 

posted @ 2024-04-01 21:37  扰扰  阅读(1)  评论(0编辑  收藏  举报