Java八股文综合常见面试题及答案Java八股文综合常见面试题及答案_java面试题-优快云博客
Zookeeper
157.zookeeper 是什么?
zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
158. zookeeper 都有哪些功能?
集群管理:监控节点存活状态、运行请求等。
主节点选举:主节点挂掉了之后可以从备用的节点开始新一轮选主,主节点选举说的就是这个选举的过程,使用 zookeeper 可以协助完成这个过程。
分布式锁:zookeeper 提供两种锁:独占锁、共享锁。独占锁即一次只能有一个线程使用资源,共享锁是读锁共享,读写互斥,即可以有多线线程同时读同一个资源,如果要使用写锁也只能有一个线程使用。zookeeper可以对分布式锁进行控制。
命名服务:在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息。
159. zookeeper 有几种部署模式?
1. 单机模式(Standalone Mode)
-
描述:单机模式下,Zookeeper 仅运行在一个节点上,适合开发和测试环境。
-
优点:部署简单,资源消耗少。
-
缺点:无高可用性,节点故障会导致服务不可用。
-
适用场景:开发、测试环境。
2. 集群模式(Cluster Mode)
-
描述:集群模式下,Zookeeper 运行在多个节点上,通常为奇数个(如 3、5、7),以确保选举机制的正常运行。
-
优点:高可用性,部分节点故障不会影响整体服务。
-
缺点:部署和维护复杂,资源消耗较多。
-
适用场景:生产环境。
3. Observer 模式
-
描述:Observer 节点不参与选举,仅同步数据并提供读取服务,用于扩展读取能力。
-
优点:提升读取性能,减轻参与选举节点的负载。
-
缺点:不参与选举,无法在选举中投票。
-
适用场景:需要扩展读取能力的生产环境。
4. 多集群模式(Multi-Cluster Mode)
-
描述:多个 Zookeeper 集群协同工作,通常用于跨地域部署或灾备。
-
优点:高可用性和容灾能力。
-
缺点:部署和维护复杂,网络延迟可能影响性能。
-
适用场景:跨地域部署或需要高容灾能力的生产环境。
5. 伪集群模式(Pseudo-Cluster Mode)
-
描述:在单台机器上运行多个 Zookeeper 实例,模拟集群环境。
-
优点:节省硬件资源,适合开发和测试。
-
缺点:无高可用性,单点故障风险。
-
适用场景:开发和测试环境。
6. 动态重配置模式(Dynamic Reconfiguration Mode)
-
描述:允许在运行时动态添加或移除 Zookeeper 集群节点。
-
优点:灵活调整集群规模,无需重启服务。
-
缺点:配置复杂,需谨慎操作。
-
适用场景:需要动态调整集群规模的生产环境。
7. Follower 模式
-
描述:Follower 节点参与选举并同步数据,提供读写服务。
-
优点:参与选举,提供高可用性。
-
缺点:增加选举负载。
-
适用场景:生产环境。
8. Leader 模式
-
描述:Leader 节点负责处理所有写请求和部分读请求。
-
优点:确保数据一致性。
-
缺点:Leader 故障会导致选举新的 Leader,可能影响性能。
-
适用场景:生产环境。
9. 备份模式(Backup Mode)
-
描述:定期备份 Zookeeper 数据,用于灾难恢复。
-
优点:数据安全性高。
-
缺点:备份和恢复操作复杂。
-
适用场景:需要高数据安全性的生产环境。
10. 混合模式(Hybrid Mode)
-
描述:结合多种部署模式,如集群模式与 Observer 模式结合。
-
优点:灵活适应不同需求。
-
缺点:部署和维护复杂。
-
适用场景:复杂生产环境。
160. zookeeper 怎么保证主从节点的状态同步?
zookeeper 的核心是原子广播,这个机制保证了各个 server 之间的同步。实现这个机制的协议叫做 zab 协议。 zab 协议有两种模式,分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,zab 就进入了恢复模式,当领导者被选举出来,且大多数 server 完成了和 leader 的状态同步以后,恢复模式就结束了。状态同步保证了 leader 和 server 具有相同的系统状态。
161. 集群中为什么要有主节点?
在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,所以就需要主节点。
162. 集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗?
可以继续使用,单数服务器只要没超过一半的服务器宕机就可以继续使用。
163. 说一下 zookeeper 的通知机制?
客户端端会对某个 znode 建立一个 watcher 事件,当该 znode 发生变化时,这些客户端会收到 zookeeper 的通知,然后客户端可以根据 znode 变化来做出业务上的改变。