1. zookeeper是什么

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

功能:
1、命名服务(naming):
是指通过指定的名字来获取资源或者服务的地址,提供者的信息。保证服务全局唯一。
2、配置管理(configuration management):
将配置信息保存在Zookeeper的某个目录节点中,然后将所有需要修改的应用机器监控配置信息的状态,一旦配置信息发生变化,每台应用机器就会收Zookeeper的通知,然后从Zookeeper获取新的配置信息应用到系统中。
3、分布式锁(synchronization):
解决分布式资源访问冲突的问题。
4、集群管理(group services):

多台 Server 组成一个服务集群,那么必须要一个“总管”知道当前集群中每台机器的服务状态,一旦有机器不能提供服务,集群中其它集群必须知道,从而做出调整重新分配服务策略。同样当增加集群的服务能力时,就会增加一台或多台 Server,同样也必须让“总管”知道。

2. zookeeper有哪几种功能

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

3. zookeeper有几种部署模式

  • 单机部署:一台机器上运行
  • 集群部署:多台机器运行(配置zoo.cfg)
  • 伪集群部署: 一个机器启动多个zookeeper实例运行

4. zookeeper怎么保证主从节点的状态同步

Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。
恢复模式:当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后,恢复模式就结束了。
因此,选主得到的leader保证了同步状态的进行,状态同步又保证了leader和Server具有相同的系统状态,当leader失去主权后可以在其他follower中选主新的leader。

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

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

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

可以使用,集群规则2N+1,N>0即最少需要3台组成集群。半数为3/2+1

7. 说一下zookeeper的通知机制

客户端端会对某个 znode 建立一个 watcher 事件(订阅/发布模式),当该 znode 发生变化时,这些客户端会收到 zookeeper 的通知,然后客户端可以根据 znode 变化来做出业务上的改变

8. 对ZAB协议的了解

全称Zookeeper Atomic Broadcast(Zookeeper原子广播协议)
zab协议详解

9. 说一下两阶段提交和三阶段提交的过程?分别有什么问题?

分布式事务:两阶段提交与三阶段提交

Scroll to Top