Zookeeper基础与原理

1、zookeeper是什么框架?

        ZooKeeper是一个开源的分布式服务框架,它是ApacheHadoop项目的一个子项目,主要用来解决分布式应用场景中存在的一些问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置管理等,它支持Standalone模式和分布式模式,在分布式模式下,能够为分布式应用提供高性能和可靠地协调服务,而且使用ZooKeeper可以大大简化分布式协调服务的实现,为开发分布式应用极大地降低了成本。

       ZooKeeper集群由一组Server节点组成,这一组Server节点中存在一个角色为Leader的节点,其他节点都为Follower。当客户端Client连接到ZooKeeper集群,并且执行写请求时,这些请求会被发送到Leader节点上,然后Leader节点上数据变更会同步到集群中其他的Follower节点。

Zookeeper基础与原理_第1张图片

       持久化: Leader节点在接收到数据变更请求后,首先将变更写入本地磁盘,以作恢复之用。当所有的写请求持久化到磁盘以后,才会将变更应用到内存

       消息同步: ZooKeeper使用了一种自定义的原子消息协议,在消息层的这种原子特性,保证了整个协调系统中的节点数据或状态的一致性。Follower基于这种消息协议能够保证本地的ZooKeeper数据与Leader节点同步,然后基于本地的存储来独立地对外提供服务。

       容灾:当一个Leader节点发生故障失效时,失败故障是快速响应的,消息层负责重新选择一个Leader,继续作为协调服务集群的中心,处理客户端写请求,并将ZooKeeper协调系统的数据变更同步(广播)到其他的Follower节点。

Zookeeper基础与原理_第2张图片

2、有哪些应用场景?

应用场景:分布式通知/协调、负载均衡、配置中心、分布式锁、分布式队列等。 

3、使用什么协议?

一、使用ZAB协议。 
        ZooKeeper并没有完全采用Paxos算法,而是使用了一种称为ZooKeeper Atomic Broadcast(ZAB,zookeeper原子消息广播协议)的协议作为其数据一致性的核心算法。
        ZAB协议是为分布式协调服务ZooKeeper专门设计的一种支持漰溃恢复的原子广播协议
        ZooKeeper实现了一种主备模式的系统架构来保持集群中各副本之间数据的一致性。具体,ZooKeeper使用一个单一的主进程来接收并处理客户端的所有事务请求,并采用ZAB的原子广播协议,将服务器的状态变更以事务Proposal的形式广播到所有的副本进程上去。ZAB协议的这个主备模型架构保证了同一时刻集群中只能够有一个主进程来广播服务器的状态变更,因此能够很好地处理客户端大量并发请求。
        所有事务请求必须由一个全局唯一的服务器来协调处理,这样的服务器称为Leader服务器,而余下的其他服务器则成为Follower服务器。Leader服务器负责将一个客户端事务请求转换成一个事务Proposal(提议),并将该Proposal分发给集群中所有的Follower服务器。之后Leader服务器需要等待所有Follower服务器的反馈,一旦超过半数的Follower服务器进行了正确反馈后,那么Leader就会再次向所有的Follower服务器分发Commit消息,要求其将前一个Proposal进行提交。
二、ZAB协议介绍
        ZAB协议的两种基本模式:崩溃恢复模式和消息广播模式。
        崩溃恢复模式
      ZAB协议会让ZK集群进入崩溃恢复模式的情况如下:
      (1)当服务框架在启动过程中
      (2)当Leader服务器出现网络中断,崩溃退出与重启等异常情况。
      (3)当集群中已经不存在过半的服务器与Leader服务器保持正常通信。
      ZAB协议进入恢复崩溃模式会做什么事情?
      (1)当Leader出现问题,则进入恢复模式并选举出新的Leader服务器。当选举出新的Leader服务器,同时集群中已经有过半的机器与该Leader服务器完成状态同步(数据同步),退出崩溃恢复模式。进入消息广播模式。
      (2)当新加入一台机器到集群中,如果此时集群已经存在一个Leader服务器在负责进行消息广播,那么新加入的服务器就会自觉地进入数据恢复模式。找到Leader服务器,并与其进行数据同步,然后进入消息广播模式,一起参与到消息广播流程中去。

4、说说分布式一致性算法Paxos

P分布式系统Paxos算法,请阅读:https://www.jdon.com/artichect/paxos.html

5、说一说选举算法及流程

选举算法及流程看最后文章推荐的书。 

6、zookeeper有哪几种节点类型?

节点类型:持久节点、持久顺序节点、临时节点、临时顺序节点。 

7、zookeeper对节点的watch监听通知是永久的吗?

不是永久的,一次性的,需要借助第三方工具实现重复注册。 

8、有哪几种部署模式?

部署模式:单机模式、伪集群模式、集群模式。

9、集群中的机器角色都有哪些?

集群角色:leader、foller、observer。 

10、集群最少要几台机器,集群规则是怎样的

集群规则为2N+1台,N>0,即3台。 

11、集群如果有3台机器,挂掉一台集群还能工作吗?挂掉两台呢?

集群需要一半以上的机器可用,所以,3台挂掉1台还能工作,2台不能。 

12、集群支持动态添加机器吗?

3.5版本开始支持动态扩容。 

13、zookeeper的java客户端都有哪些?

java客户端:zk自带的zkclient及Apache开源的Curator。

14、chubby是什么,和zookeeper比你怎么看?

chubby是google的,完全实现paxos算法,不开源。zookeeper是chubby的开源实现,使用zab协议,paxos算法的变种。 

15、说几个zookeeper常用的命。

常用命令:ls get set create delete等。


 

你可能感兴趣的:(zookeeper)