JAVA面试题 — Zookeeper篇

1.Zookeeper 是什么/p>

Zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务。

 

2.Zookeeper 都有哪些功能/p>

  • 集群管理:监控节点存活状态、运行请求等。
  • 主节点选取:主节点挂掉了之后可以从备用的节点开始新一轮选举,主节点选举说的就是这个选举过程,使用 Zookeeper 可以协助完成这个过程。
  • 分布式锁:Zookeeper 提供两种锁:独占锁,共享锁。独占锁即一次只能有一个线程使用资源,共享锁是读锁共享,读写互斥,即可以有多个线程同时读同一个资源,如果要使用写锁也只能有一个线程使用。Zookeeper 可以对分布式锁进行控制。
  • 命名服务:在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息。

 

3.Zookeeper 有几种部署模式/p>

  • 单机部署:一台集群上运行
  • 集群部署:多台集群运行
  • 伪集群部署:一台集群启动多个 Zookeeper 实例运行

 

4.Zookeeper 怎么保证主从节点的状态同步/p>

Zookeeper 的核心是原子广播,这个机制保证了各个 server 之间的同步。实现这个机制的协议叫做 zab 协议,zab协议有两种模式,分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,zab 就进入了恢复模式,当领导者被选举出来,且大多数 server 完成了和 leader 的状态同步以后,恢复模式就结束了。状态同步保证了 leader 和 server 具有相同的系统状态。

5.集群中为什么要有主节点/p>

在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,所以就需要主节点。

 

6.集群中有3台服务器,其中一个节点宕机,这时候 Zookeeper 还可以继续使用吗/p>

可以继续使用,单数服务器只要没超过一半的服务器宕机就可以继续使用。

 

7.Zookeeper 通知机制/p>

客户端会对某个 znode 建立一个 watcher 事件,当该 znode 发生变化时,这些客户端会收到一个 Zookeeper 通知,然后客户端就可以根据 znode 变化做出业务上的变化。

 

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91469 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年6月24日
下一篇 2019年6月24日

相关推荐