Java面试题-12Zookeeper
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,并进行数据同步;消息广播模式则确保了在集群正常运行时,能够处理客户端的事务请求并保持数据的一致性。
4、Zookeeper 中节点类型
这些描述是关于 Zookeeper 中节点类型的基本概念,这些节点类型对于分布式系统中的协调与通知非常重要。
-
PERSISTENT(持久节点):这种节点在 Zookeeper 上一直存在,除非被手动删除。即使客户端会话结束或断开连接,该节点也不会被删除。
-
EPHEMERAL(临时节点):临时节点的生命周期与客户端会话绑定。当创建这样的节点的客户端会话失效时(不一定是连接断开,而是会话失效),这些节点会被自动移除。
-
PERSISTENT_SEQUENTIAL(持久顺序节点):与持久节点类似,但增加了顺序属性。节点名后会追加一个由父节点维护的自增整型数字,以确保节点在创建时按顺序排列。
-
EPHEMERAL_SEQUENTIAL(临时顺序节点):与临时节点类似,但也增加了顺序属性。节点名后会追加一个由父节点维护的自增整型数字,以确保节点在创建时按顺序排列。
这些节点类型在构建分布式系统时非常有用,例如用于存储配置信息、服务注册与发现、分布式锁等。通过这些节点类型,可以实现诸如节点监控、任务调度等功能。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具