大数据开发面试题【Zookeeper篇】

47、zookeeper是什么?

主要服务于分布式系统,可用来做统一配置管理、统一命令服务、分布式锁、集群管理等

48、zookeeper的作用以及适用场景?

数据的发布订阅:由于大数据集群中节点过多,不可逐台进行修改,在设计时候采用统一的配置中心,之后只需要将新的配置发送到配置中心,所有节点都可自动下载更新

命名服务:zk通过顺序节点的特性来生成全局唯一ID

Master选举:让所有服务节点去竞争性地创建用一个ZNode,必然只有一个服务节点能够创建成功

分布式锁:

集群管理:

事务操作:

49、Zookeeper的选举策略,leader和follower的区别?

在zk集群启动时候,需要确定一台leader服务器。首先确保集群之间可以相互通信
第一次选举:

假如集群有五台服务器:

服务器1启动时候,会投自己一票,此时不满半数,服务器1保持为looking

服务器2启动时候,服务器1和服务器2交换信息,但服务器1发现服务器2的myid比自己大,所以将自己的票投给服务器2,此时服务器1有0票,服务器2有两票,不满半数,都为looking

服务器3启动时候,重复上述步骤,拥有3个选票,超过半数,当选为leader,此时其他服务器状态为following

第二次选举:

当集群中的leader挂掉之后,其他所有节点会把自己的状态设置为looking,此时的选举规则为①EPOCH大的直接胜出,②:EPOCH相同,事务id大的胜出,③:事务id相同,服务器id大的胜出

SID:服务器ID。用来唯一标识一台 ZooKeeper集群中的机器,每台机器不能重

复,和myid一致。

ZXID:事务ID。ZXID是一个事务ID,用来 标识一次服务器状态的变更。在某一时刻, 集群中的每台机器的ZXID值不一定完全一 致,这和ZooKeeper服务器对于客户端"更 新请求"的处理逻辑有关。

Epoch:每个Leader任期的代号。没有 Leader时同一轮投票过程中的逻辑时钟值是 相同的。每投完一次票这个数据就会增加

50、Zookeeper的节点类型有哪些?分别作用是什么?

持久节点类型:节点在创建后,一直存在,直到主动来删除这个节点,不会因为客户端会话失效而消失

持久顺序节点:和持久节点类似,

临时节点:临时节点的生命周期和客户端会话绑定,如果客户端会话失效,该节点消失

51、Zookeeper的节点数怎么设置比较好?

在ZK集群中,建议部署奇数个节点,大多数情况下,三个就ok,节点数越多,节点间通信所需要的时间也越久,选举leader时候需要的时间也越久

zk集群的容错数:在保证集群可用的前提下,最多允许挂掉的节点个数,也叫做zk集群的容错数,

52、ZK中的脑裂问题

原本是一个leader,现在变成了两个leader服务,一般zk集群中不会轻易出现脑裂问题,原因在于过半机制

在zk中的过半机制是大于,而不是大于等于:为了防止脑裂

假死:由于心跳超时,认为leader死了,实际上leader还活着

脑裂:由于假死会发起新的选举,选举一个新的leader,但此时旧的那个leader网络恢复,故此时集群中有两个leader,此时造成脑裂

解决脑裂问题:

quorums方式:

53、Zookeeper如何保证数据的一致性?

ZAB(zookeeper autom broadcast)原子广播协议。

ZAB协议分为两部分:

消息广播阶段:leader接收事务提交,并且将新的proposal请求广播给follower节点,收集各个节点的反馈,决定是否commit

崩溃恢复机制:如果在同步过程中出现 Leader 节点宕机,会进入崩溃恢复阶段,重新进行 Leader 选举,崩溃恢复阶段还包含数据同步操作,同步集群中最新的数据,保持集群的数据一致性。

补充:zk中的一致性协议叫什么

ZAB(zookeeper autom broadcast)原子广播协议。

ZAB协议是一个分布式一致性算法,让ZK拥有了崩溃恢复和原子广播的能力,进而保证集群中的数据一致性

实现架构:任何learner节点接收到非事务请求查询本地缓存然后返回,任何事务操作都需要转发给leader,由leader发起决议,同集群中超过半数的follower返回确认ack时,leader进行广播看,要求全部节点提交事务

特性:保证早leader上提交的事务最终被所有服务器提交;保证丢弃没有经过半数检验的事务

协议内容:集群启动时候,或者当leader服务器网络中断、崩溃恢复等情况时候,ZAB协议就会进入崩溃恢复模式,选举产生新的leader;当选举产生新的leader,同时集群中由过半机器与该leader服务器完成了数据同步之后,zab协议就会退出崩溃模式,进入消息广播模式

相关推荐
ZHOU西口26 分钟前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
zmd-zk36 分钟前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
激流丶38 分钟前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
测试界的酸菜鱼1 小时前
Python 大数据展示屏实例
大数据·开发语言·python
时差9531 小时前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
Mephisto.java1 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
Mephisto.java1 小时前
【大数据学习 | kafka高级部分】kafka的优化参数整理
大数据·sql·oracle·kafka·json·database
道可云1 小时前
道可云人工智能&元宇宙每日资讯|2024国际虚拟现实创新大会将在青岛举办
大数据·人工智能·3d·机器人·ar·vr
成都古河云1 小时前
智慧场馆:安全、节能与智能化管理的未来
大数据·运维·人工智能·安全·智慧城市
软工菜鸡1 小时前
预训练语言模型BERT——PaddleNLP中的预训练模型
大数据·人工智能·深度学习·算法·语言模型·自然语言处理·bert