20240301-2-ZooKeeper面试题(二)

image-20240228202738121

11. Chroot 特性

3.2.0 版本后,添加了 Chroot 特性,该特性允许每个客户端为自己设置一个命名空间。如果一个客户端设置了 Chroot,那么该客户端对服务器的任何操作,都将会被限制在其自己的命名空间下。

通过设置 Chroot,能够将一个客户端应用于 Zookeeper 服务端的一颗子树相对应,在那些多个应用公用一个 Zookeeper 进群的场景下,对实现不同应用间的相互隔离非常有帮助。

12. 会话管理

分桶策略:将类似的会话放在同一区块中进行管理,以便于 Zookeeper 对会话进行不同区块的隔离处理以及同一区块的统一处理。

分配原则:每个会话的“下次超时时间点”(ExpirationTime)

计算公式

ExpirationTime_ = currentTime + sessionTimeout

ExpirationTime = (ExpirationTime_ / ExpirationInrerval + 1) *

ExpirationInterval , ExpirationInterval 是指 Zookeeper 会话超时检查时间间隔,默认 tickTime

13. 服务器角色

Leader

1、事务请求的唯一调度和处理者,保证集群事务处理的顺序性

2、集群内部各服务的调度者

Follower

1、处理客户端的非事务请求,转发事务请求给 Leader 服务器

2、参与事务请求 Proposal 的投票

3、参与 Leader 选举投票

Observer

1、3.0 版本以后引入的一个服务器角色,在不影响集群事务处理能力的基础上提升集群的非事务处理能力

2、处理客户端的非事务请求,转发事务请求给 Leader 服务器

3、不参与任何形式的投票

14. Zookeeper 下 Server 工作状态

服务器具有四种状态,分别是 LOOKING、FOLLOWING、LEADING、OBSERVING。

1、LOOKING:寻找 Leader 状态。当服务器处于该状态时,它会认为当前集群中没有 Leader,因此需要进入 Leader 选举状态。

2、FOLLOWING:跟随者状态。表明当前服务器角色是 Follower。

3、LEADING:领导者状态。表明当前服务器角色是 Leader。

4、OBSERVING:观察者状态。表明当前服务器角色是 Observer。

15. 数据同步

整个集群完成 Leader 选举之后,Learner(Follower 和 Observer 的统称)回向Leader 服务器进行注册。当 Learner 服务器想 Leader 服务器完成注册后,进入数据同步环节。

数据同步流程:(均以消息传递的方式进行)

Learner 向 Learder 注册

数据同步

同步确认

Zookeeper 的数据同步通常分为四类

1、直接差异化同步(DIFF 同步)

2、先回滚再差异化同步(TRUNC+DIFF 同步)

3、仅回滚同步(TRUNC 同步)

4、全量同步(SNAP 同步)

在进行数据同步前,Leader 服务器会完成数据同步初始化:

peerLastZxid:

从 learner 服务器注册时发送的 ACKEPOCH 消息中提取 lastZxid(该Learner 服务器最后处理的 ZXID)

minCommittedLog:

Leader 服务器 Proposal 缓存队列 committedLog 中最小 ZXID

maxCommittedLog:

Leader 服务器 Proposal 缓存队列 committedLog 中最大 ZXID

直接差异化同步(DIFF 同步)

场景:peerLastZxid 介于 minCommittedLog 和 maxCommittedLog之间

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

场景:当新的 Leader 服务器发现某个 Learner 服务器包含了一条自己没有的事务记录,那么就需要让该 Learner 服务器进行事务回滚–回滚到 Leader服务器上存在的,同时也是最接近于 peerLastZxid 的 ZXID

仅回滚同步(TRUNC 同步)

场景:peerLastZxid 大于 maxCommittedLog

全量同步(SNAP 同步)

场景一:peerLastZxid 小于 minCommittedLog

场景二:Leader 服务器上没有 Proposal 缓存队列且 peerLastZxid 不等于 lastProcessZxid

16. zookeeper 是如何保证事务的顺序一致性的?

zookeeper 采用了全局递增的事务 Id 来标识,所有的 proposal(提议)都在被提出的时候加上了 zxid,zxid 实际上是一个 64 位的数字,高 32 位是 epoch(时期; 纪元; 世; 新时代)用来标识 leader 周期,如果有新的 leader 产生出来,epoch会自增,低 32 位用来递增计数。当新产生 proposal 的时候,会依据数据库的两阶段过程,首先会向其他的 server 发出事务执行请求,如果超过半数的机器都能执行并且能够成功,那么就会开始执行。

17. 分布式集群中为什么会有 Master?

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

18. zk 节点宕机如何处理?

Zookeeper 本身也是集群,推荐配置不少于 3 个服务器。Zookeeper 自身也要保证当一个节点宕机时,其他节点会继续提供服务。

如果是一个 Follower 宕机,还有 2 台服务器提供访问,因为 Zookeeper 上的数据是有多个副本的,数据并不会丢失;

如果是一个 Leader 宕机,Zookeeper 会选举出新的 Leader。ZK 集群的机制是只要超过半数的节点正常,集群就能正常提供服务。只有在 ZK节点挂得太多,只剩一半或不到一半节点能工作,集群才失效。所以3 个节点的 cluster 可以挂掉 1 个节点(leader 可以得到 2 票>1.5)

2 个节点的 cluster 就不能挂掉任何 1 个节点了(leader 可以得到 1 票<=1)

19. zookeeper 负载均衡和 nginx 负载均衡区别

zk 的负载均衡是可以调控,nginx 只是能调权重,其他需要可控的都需要自己写插件;但是 nginx 的吞吐量比 zk 大很多,应该说按业务选择用哪种方式。

20. Zookeeper 有哪几种几种部署模式?

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2822013.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

羊大师分享,羊奶奶有哪些对健康有益的喝法?

羊大师分享&#xff0c;羊奶奶有哪些对健康有益的喝法&#xff1f; 羊奶奶有多种对健康有益的喝法&#xff0c;以下是一些建议&#xff1a; 直接饮用&#xff1a;将羊奶直接煮沸后饮用&#xff0c;可以保留羊奶中的营养成分&#xff0c;为身体提供全面的滋养。羊奶的丰富蛋白质…

Spring11、整合Mybatis

11、整合Mybatis 步骤&#xff1a; 导入相关jar包 junit <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency> mybatis <dependency><groupId>org.my…

【MySQL】redo log和undo log

引入 在介绍redo log和undo log之前&#xff0c;我们需要了解 MySQL 中的两个概念&#xff1a;缓冲池和数据页。 缓冲池(buffer pool)&#xff1a;主内存中的一个区域&#xff0c;里面可以缓存磁盘上经常操作的真实数据&#xff0c;在执行 CRUD 操作时&#xff0c;先操作缓冲…

Java 封装阿里云 oss 上传图片时抽取配置到 application 使用 @Value 获取值

Java 封装阿里云 oss 上传图片时抽取配置到 application 使用 Value 获取值 application .yml 配置 alioss: # 阿里云配置endpoint: "https://oss-cn-beijing.aliyuncs.com" # Endpoint以华东1&#xff08;杭州&#xff09;为例&#xff0c;其它Region请按实际…

任务系统之API子任务

日常运维工作中有许多的任务要执行&#xff0c;例如项目发布/数据备份/定时巡检/证书更新/漏洞修复等等&#xff0c;大部分的任务都会有多个步骤共同完成&#xff0c;例如一个发布任务会有拉代码、编译、分发、通知等等步骤&#xff0c;而不同的任务可能还包含相同或相似的步骤…

应用稳定性优化1:ANR问题全面解析

闪退、崩溃、无响应、重启等是应用稳定性常见的问题现象&#xff0c;稳定性故障大体可归类为ANR/冻屏、Crash/Tombstone、资源泄露三大类。本文通过对三类故障的产生原因、故障现象、触发机制及如何定位等&#xff0c;展开深度解读。 本文将详解ANR类故障&#xff0c;并通过一…

如何在群晖Docker运行本地聊天机器人并结合内网穿透发布到公网访问

文章目录 1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址 随着ChatGPT 和open Sora 的热度剧增,大语言模型时代,开启了AI新篇章,大语言模型的应用非常广泛&#xff0c;包括聊天机…

【MicroPython教程】SSD1306 oled

文章目录 前言一、OLED的介绍二、下载ssd1306驱动三、ssd1306驱动的使用3.1 oled屏连线3.2 初始化oled3.3 画图函数填充整个屏幕显示画点滚动写字画圆形画弧画无填充的矩形画填充矩形画线画xbm图像 四、示例代码——正弦函数总结 前言 SSD1306 OLED 是一种常见的小型显示屏&am…

​MPV,汽车产品里一个特殊品类的进化过程

「汽车」可能是整个工业革命以来&#xff0c;所诞生出的最有趣的工业产品。 它不仅能产生工业的机械美&#xff0c;还诞生了一个独立的文化体系&#xff0c;在汽车的发展过程中&#xff0c;我们也能看到一些本来应功能而诞生的产品&#xff0c;最终走向了千家万户。 MPV 就是…

【王道数据结构】【chapter8排序】【P371t6】

试设计一个算法&#xff0c;判断一个数据序列是否构成一个小根堆&#xff08;下面代码中的堆排序的部分仅仅是为了方便设计测试用例&#xff09; #include <iostream> #include<time.h> #include<stdlib.h>int * buildarray(int size) {int* tmp(int *) mall…

Java毕业设计-基于springboot开发的家政服务管理平台系统-毕业论文+答辩PPT(有源代码)

文章目录 前言一、毕设成果演示&#xff08;源代码在文末&#xff09;二、毕设摘要展示1.开发说明2.需求分析3、系统功能结构 三、系统实现展示1、前台模块设计2、后台功能模块2.1管理员功能模块2.2用户功能模块2.3服务人员功能模块 四、毕设内容和源代码获取总结 Java毕业设计…

P2040 打开所有的灯

题目传送门&#xff1a;P2040 打开所有的灯 用深度优先搜索实现的一个填色题。 题目步骤&#xff1a; 1..dfs 首先dfs要判断是否符合题意&#xff0c;如果符合题意就更新最短路&#xff1b; 如果不符合题意就枚举 如果是关的就把周围四个包括 给标记上和原来相反的&#xf…

文件怎么减小内存?4个简单的方法~

随着我们在电脑或移动设备上创建、下载和收集越来越多的文件&#xff0c;存储空间的管理变得尤为重要。有时&#xff0c;文件太大会占用过多的内存&#xff0c;导致存储空间不足的问题。但别担心&#xff0c;本文将向您介绍五种简单有效的方法&#xff0c;帮助您轻松减小文件的…

SpringBoot启动扩展应用:干预优化+加快启动时间(干货典藏版)

一、SpringBoot启动过程干预 Spring Boot启动过程中我们可以实现以下干预工作&#xff1a; 修改Spring Boot默认的配置属性。使用ConfigurationProperties和EnableConfigurationProperties注解&#xff0c;可以获取和修改Spring Boot的配置属性。 加载配置文件。Spring Boot会…

深度伪造,让网络钓鱼更加难以辨别

网络钓鱼一直是安全领域的一个突出话题&#xff0c;尽管这类诈骗形式已经存在了几十年&#xff0c;依旧是欺诈攻击或渗透组织的最有效方法之一。诈骗分子基于社会工程原理&#xff0c;通过邮件、网站以及电话、短信和社交媒体&#xff0c;利用人性&#xff08;如冲动、不满、好…

JavaWeb之 Web概述

目录 前言1.1 Web和 JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器 1.3 JavaWeb 学习内容 前言 博主将用 CSDN 记录 Java 后端开发学习之路上的经验&#xff0c;并将自己整理的编程经验和知识分享出来&a…

2024年腾讯云服务器优惠活动,3月份价格曝光可领代金券

腾讯云优惠活动2024新春采购节活动上线&#xff0c;云服务器价格已经出来了&#xff0c;云服务器61元一年起&#xff0c;配置和价格基本上和上个月没什么变化&#xff0c;但是新增了8888元代金券和会员续费优惠&#xff0c;腾讯云百科txybk.com整理腾讯云最新优惠活动云服务器配…

[VNCTF2024]-PWN:preinit解析(逆向花指令,绕过strcmp,函数修改,机器码)

查看保护&#xff1a; 查看ida&#xff1a; 这边其实看反汇编没啥大作用&#xff0c;需要自己动调。 但是前面的绕过strcmp还是要看一下的。 解题&#xff1a; 这里是用linux自带的产生随机数的文件urandom来产生一个随机密码&#xff0c;然后让我们输入密码&#xff0c;用st…

C++ //练习 10.6 编写程序,使用fill_n将一个序列中的int值都设置为0。

C Primer&#xff08;第5版&#xff09; 练习 10.6 练习 10.6 编写程序&#xff0c;使用fill_n将一个序列中的int值都设置为0。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /********************************************…

7.1.2 Selenium的用法1

目录 1. 初始化浏览器对象和访问页面 2. 查找节点及节点交互 2.1 查找单个节点 &#xff08;1&#xff09;获取方法1——特定方法 &#xff08;2&#xff09;通用方法 2.2 查找多个节点 2.3 节点交互 3. 动作链 4. 执行 JavaScript 之下拉进度条 5. 获取节点信息 5.…