ZK面试题

### 关于ZooKeeper的面试题整理及答案解析 #### 1. ZooKeeper 的核心概念有哪些? ZooKeeper 是一个分布式协调服务,其核心概念包括以下几个方面[^2]: - **一致性模型**:ZooKeeper 提供了一致性保证,客户端可以在任何服务器上看到相同的数据视图。 - **顺序编号 (zxid)**:所有更新操作都具有全局唯一的事务 ID,即 zxid,用于维护更新的全局顺序[^3]。 #### 2. ZooKeeper 的应用场景有哪些? ZooKeeper 常见的应用场景如下: - **配置管理**:集中存储系统的配置信息,并允许动态修改这些配置。 - **命名服务**:为分布式系统中的节点提供统一的名字空间。 - **分布式锁**:通过临时节点实现互斥访问控制。 - **集群管理**:监控集群成员的状态变化并通知其他组件。 #### 3. 如何理解 ZooKeeper 的有序性和一致性? ZooKeeper 的有序性体现在每次更新都会分配一个唯一的 zxid 来表示该次更新的时间戳。这种机制确保了所有更新操作在全球范围内按序执行。 对于一致性,ZooKeeper 实现了强一致性的协议 Paxos 或 Zab 协议来保障数据同步[^2]。 #### 4. ZooKeeper 中 Watcher 的工作机制是什么? Watcher 是一种观察者模式,在指定路径发生变化时触发回调函数。需要注意的是,Watchers 只能被触发一次,如果希望持续监听,则需要重新设置 watcher[^2]。 #### 5. 数据模型的特点以及它如何支持树形结构? ZooKeeper 使用类似于文件系统的层次化目录结构作为它的数据模型。每个 znode(节点)既可以保存少量数据也可以拥有子节点。此外,还存在两种类型的 znodes —— 持久节点和临时节点[^2]。 ```java // 创建持久节点示例代码 String path = "/example"; Stat stat = new Stat(); byte[] data = "some_data".getBytes(); try { zk.create(path, data, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } catch (Exception e) { System.out.println(e.getMessage()); } ``` #### 6. Leader 和 Follower 在 ZooKeeper 中的作用分别是什么? Leader 负责处理写请求并将变更广播给 Followers;Followers 接收来自 Client 的只读查询请求并向 Leader 报告状态更新情况。当发生网络分区或者崩溃恢复期间选举新 leader 时,Quorum 成员共同参与投票过程决定最终胜出方。 --- ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值