Zookeeper面试题

本文详细介绍了Zookeeper的基础知识,包括其部署模式、ZAB协议及其在数据一致性中的作用。Zookeeper通过ZAB协议确保数据的最终一致性,并在CAP定理中选择了CP特性,牺牲了部分可用性以保证数据强一致性。同时,文中探讨了在服务启动和运行期间的选举过程以及不同同步策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Zookeeper面试题

一、基础知识

1.zookeeper是什么

ZooKeeper主要服务于分布式系统,可以用ZooKeeper来做:统一配置管理、统一命名服务、分布式锁、集群管理。

2.zookeeper有几种部署模式

单机模式
集群模式(配置 zoo.cfg)
伪集群模式(一台服务器启动多个zookeeper实例运行)

二、ZAB协议

Zab(Zookeeper Atomic Broadcast)是为ZooKeeper协设计的崩溃恢复原子广播协议,它保证zookeeper集群数据的一致性和命令的全局有序性。

1.前置知识

集群角色

在这里插入图片描述

服务状态

在这里插入图片描述

ZAB四种状态

Zookeeper是通过自身的状态来区分自己所属的角色,来执行自己应该的任务。
在这里插入图片描述

2.leader选举算法

服务启动期间的选举

在这里插入图片描述

服务运行期间的选举

在这里插入图片描述
Zxid是极为重要的概念,它是一个long型(64位)整数,分为两部分:纪元(epoch)部分和计数器(counter)部分,是一个全局有序的数字。

epoch代表当前集群所属的哪个leader,leader的选举就类似一个朝代的更替,你前朝的剑不能斩本朝的官,用epoch代表当前命令的有效性,counter是一个递增的数字。

集群在经过leader选举之后还会有连接leader和同步两个步骤,然后保证数据一致性。

3.选举之后怎样进行数据同步

在这里插入图片描述

直接差异化同步 DIFF同步

在这里插入图片描述
在这里插入图片描述

先回滚再差异化同步 TRUNC+DIFF同步

在这里插入图片描述

仅回滚同步 TRUNC同步

在这里插入图片描述

全量同步 SNAP同步

在这里插入图片描述

4.Zookeeper是如何保证数据一致性的

概述

Zookeeper通过ZAB原子广播协议来实现数据的最终顺序一致性,他是一个类似2PC两阶段提交的过程。

由于Zookeeper只有Leader节点可以写入数据,如果是其他节点收到写入数据的请求,则会将之转发给Leader节点。

主要流程

在这里插入图片描述
在这里插入图片描述

ZAB两种模式

在这里插入图片描述

三、CAP定理

1.概述

CAP是一个分布式系统设计的定理,他包含3个部分,并且最多只能同时满足其中两个。

2.Consistency一致性

1.一致性就是指的是数据在不同的节点之间怎样保证一致性。

2.对于纯理论的C而言,默认的规则是忽略掉延迟的,因为如果考虑延迟的话,因为数据同步的过程无论如何都会有延迟的,延迟的过程必然会带来数据的不一致。

3.Availability可用性

1.指的是对于每一个请求,节点总是可以在合理的时间返回合理的响应。

2.比如Zookeeper在进行数据同步时,无法对外提供读写服务,不满足可用性要求。

4.Partition-tolerance分区容错性

在一个分布式系统当中,很有可能由于部分节点的网络问题导致整个集群之间的网络不连通,所以就产生了网络分区,整个集群的环境被分隔成不同的的子网。

5.CA之间取舍

CP舍弃A

如果一个分布式系统不要求强的可用性,即允许系统停机或者长时间无响应的话,就可以在CAP三者中保障CP而舍弃A。

设计成CP的系统比较典型的就是分布式数据库。

如Redis、HBase这种分布式存储系统,如ZooKeeper这种分布式协调系统,数据的一致性是最基本的要求。

AP舍弃C

放弃了数据强一致性,退而求其次保证数据最终一致性。

电商网站的秒杀活动或者12306购票,在高并发情况下可能需要一些排队机制,这就是在可用性和分区容错性方面保证了系统正常服务,然后在数据的一致性方面做了一些让步,会影响一些用户体验,但也不会造成用户流程的严重阻塞,这种机制虽然在瞬间可能存在数据不一致的情况,但过了一段时间还是要保证最终一致性的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值