Zookeeper的常见面试题(全)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 目录前言1. Zookeeper的了解2. ZAB协议 / 主从节点的同步了解3. 多少种部署方式4. 通知机制5. 集群节点的个数6. 节点的类型有什么7. 集群安装的特点8. 选举机制是如何的前言主要理顺zookeeper的相关知识点以及面试常被问及的知识点基础知识可看我之前的文章Zookeeper从入门到精通(全)1. Zookeeper的了解zookeeper主要是文件系统(存储数据)和通知机制(进行通知信息)它是一个为分布式应用提供一致性服务的软件具体都有哪些些功能统一命名服务

前言

主要理顺zookeeper的相关知识点以及面试常被问及的知识点
基础知识可看我之前的文章
Zookeeper从入门到精通(全)

1. Zookeeper的了解

zookeeper主要是文件系统(存储数据)和通知机制(进行通知信息)

它是一个为分布式应用提供一致性服务的软件

具体都有哪些些功能

  • 统一命名服务(域名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息)
  • 统一配置管理(一个集群中的所有配置都一致,且也要实时更新同步)

将配置信息写入ZooKeeper上的一个Znode,各个客户端服务器监听这个Znode。一旦Znode中的数据被修改,ZooKeeper将通知各个客户端服务器

  • 统一集群管理(掌握实时状态)

将节点信息写入ZooKeeper上的一个ZNode。监听ZNode获取实时状态变化

  • 服务器节点动态上下线(主节点挂了,从备用节点中选举)
  • 软负载均衡(根据每个节点的访问数,让访问数最少的服务器处理最新的数据需求)
  • 分布式锁(提供两种独占锁,共享锁)

2. ZAB协议 / 主从节点的同步了解

ZAB 协议包括两种基本的模式:崩溃恢复和消息广播。

假设两种服务器异常情况:
(1)假设一个事务在Leader提出之后,Leader挂了。
(2)一个事务在Leader上提交了,并且过半的Follower都响应Ack了,但是Leader在Commit消息发出之前挂了。

Zab协议崩溃恢复要求满足以下两个要求:
(1)确保已经被Leader提交的提案Proposal,必须最终被所有的Follower服务器提交。 (已经产生的提案,Follower必须执行)
(2)确保丢弃已经被Leader提出的,但是没有被提交的Proposal。(丢弃胎死腹中的提案)

之后开始新的leader的选举

Leader选举:根据上述要求,Zab协议需要保证选举出来的Leader需要满足以下条件:

(1)新选举出来的Leader不能包含未提交的Proposal。即新Leader必须都是已经提交了Proposal的Follower服务器节点
(2)新选举的Leader节点中含有最大的zxid。这样做的好处是可以避免Leader服务器检查Proposal的提交和丢弃工作。

消息广播模式:当集群超过半数机器与该Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式

Leader服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。

之后ZooKeeper 服务一直维持广播状态,直到 leader 崩溃了或者 leader 失去了大部分的 followers 支持。

3. 多少种部署方式

  • 单机部署(一台集群)
  • 集群部署:(多台集群)
  • 伪集群部署:(一台集群运行多个zookeeper)

4. 通知机制

客户端对某个节点进行监听,当节点发生变化的时候,客户端会收到zookeeper的通知,之后客户端会根据节点的变化做出改变

5. 集群节点的个数

集群规则为 2N+1
只要集群中半数以上的节点存活,集群就可以正常提供服务

比如:

集群中只有2台服务器,1台挂掉,集群不工作

集群中只有3台服务器(3的半数是1.5,半数以上是2),1台挂掉,集群重新选主对外工作(也就允许一台挂掉)

集群中只有4台服务器(4的半数为2,半数以上最少为3),1台挂掉,集群重新选主对外工作(也就允许一台挂掉)

特别重要的特点:
2n+1台和2n+2台机器的容灾能力相同,都是允许n台机器宕机
一般选择部署2n+1台机器(节约数量)

6. 节点的类型有什么

节点类型分为(两两进行组合)

  • 持久/短暂
  • 有序号/无序号

如果退出客户端,这些短暂节点将会被清除

至于有序号的节点:一般都是在节点名后,追加一个由父节点维护的自增整型数字。

7. 集群安装的特点

要安装奇数台

服务器台数多:

  • 好处,提高可靠性;
  • 坏处:提高通信延时

8. 选举机制是如何的

半数机制,超过半数的投票通过,即通过。

(1)第一次启动选举规则:
投票过半数时,服务器 id 大的胜出

(2)第二次启动选举规则:
①EPOCH 大的直接胜出
②EPOCH 相同,事务 id 大的胜出
③事务 id 相同,服务器 id 大的胜出

9. Zookeeper与dubbo的关系

通过dubbo引入zookeeper
外接不同媒介给注册中心

可以达到负载均衡,管理各个节点
可以达到命名服务,更好的管理节点
可以达到节点和资源之间更好的同步(本身就有很好的机制)
可以有分布式锁等等

10. 分布式锁的了解

通过节点的加锁解锁
主要是通过监听机制,以及每个加锁节点的序号,前一个节点序号解锁,下一个节点序号才可加锁的机制等

详情可看这篇友情链接
Zookeeper 分布式锁 - 图解 - 秒懂

11. 客户端向服务端写数据流程

发送给leader的时候
通俗解释:客户端给服务器的leader发送写请求,写完数据后给手下发送写请求,手下写完发送给leader,超过半票以上都写了则发回给客户端。之后leader在给其他手下让他们写,写完在发数据给leader
在这里插入图片描述
发送给follower的时候
通俗解释:客户端给手下发送写的请求,手下给leader发送写的请求,写完后,给手下发送写的请求,手下写完后给leader发送确认,超过半票,leader确认后,发给刻划断,之后leader在发送写请求给其他手下
在这里插入图片描述
补充:
关于这个流程,详情可参照以下友情连接的补充
说一下两阶段提交和三阶段提交的过程?分别有什么问题?

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
7月前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
590 2
|
7月前
|
消息中间件 负载均衡 Kafka
【大厂面试演练】听说你很懂ZooKeeper?那我考考你
面试官:看你简历写了精通ZooKeeper,那我就随便考考你吧。首先我上面说的共享锁实现方式如果在集群不大的情况下是可行的,而且他实现简单实用。而如果在集群规模大的场景下,可以这样改进...
207 3
【大厂面试演练】听说你很懂ZooKeeper?那我考考你
|
存储 算法 Java
准备跳槽必看的这道【Java面试题】:谈谈你对Zookeeper 选举原理的理解
一位工作了 7 年的程序员,最近在面试时被问到一个关于Zookeeper的问题。因为平时很少研究,所以面试的时候只能一直说:不知道,不知道,不知道。当时,他感觉很尴尬,面试还没结束,就已经知道应该被Pass了。于是又来问我,希望我能分享一期这样的视频。
103 2
|
6月前
|
缓存 NoSQL 数据库
分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)
分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)
109 0
|
消息中间件 存储 分布式计算
程序员转型到互联网面试必问题:谈谈你对Zookeeper的理解
对一个没有接触过分布式的小伙伴来说,可能还不太清楚Zookeeper在分布式应用中的重要性,今天有位从传统行业转型到互联网的小小伙伴问我,希望跟他讲讲Zookeeper什么,能解决什么问 题?今天,我给大家详细介绍一下。
84 1
|
NoSQL 算法 Java
高频面试题实现分布式锁中,zookeeper和Redis哪种更好?
一位6年工作经验的小伙伴,在某厂面试时被问到“实现分布式锁,Zookeeper 和 Redis 哪种更好?“,这其实是一个开放性的问题。并没有标准答案。那今天呢,我给大家分享一下我的理解,希望能够帮助到大家。
268 0
高频面试题实现分布式锁中,zookeeper和Redis哪种更好?
Java 最常见的面试题:zookeeper 怎么保证主从节点的状态同步?
Java 最常见的面试题:zookeeper 怎么保证主从节点的状态同步?
Java 最常见的面试题:zookeeper 有几种部署模式?
Java 最常见的面试题:zookeeper 有几种部署模式?
|
Java Linux API
Zookeeper学习---3、服务器动态上下线监听案例、ZooKeeper 分布式锁案例、企业面试真题
Zookeeper学习---3、服务器动态上下线监听案例、ZooKeeper 分布式锁案例、企业面试真题
Java 最常见的面试题:说一下 zookeeper 的通知机制?
Java 最常见的面试题:说一下 zookeeper 的通知机制?