当前位置: 首页 > news >正文

zookeeper面试题

1. 什么是zookeeper

zookeeper是一个开源的 分布式协调服务。他是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。
Zookeeper保证了如下分布式一致性特性:

  1. 顺序一致性
  2. 原子性
  3. 单一视图
  4. 可靠性
  5. 实时性(最终一致性)

2. Zookeeper都有哪些功能

  • 集群管理:监控节点存活状态、运行请求等。
    主节点选举:主节点挂掉了之后,可以从备用的节点开始新一轮选主,主节点选举说的就是这个选举过程,使用zookeeper可以协助完成这个过程。
    分布式锁:Zookeeper提供两种锁:独占锁、共享锁。独占锁即一次只能有一个线程使用资源,共享锁是读锁共享,读写互斥,即可以有多个线程同时读同一个资源,如果要使用写锁也只能有一个线程使用。Zookeeper可以对分布式锁进行控制。
    命名服务:在分布式系统中,通过使用命名服务,客户端应用能够指定名字来获取资源或服务地址,提供者等信息。

3. Zookeeper的工作流程

首先客户端连接Zookeeper集群中的任何一个节点,可以是leader节点,也可以是follower节点,一旦连接,节点会给客户端分配会话ID,并向客户端发送确认,如果客户端收到确认,那么连接成功,客户端会规律性的给Zookeeper发送心跳包,确保连接没有断开。

  • 客户端向zookeeper从节点发送读请求,节点会直接从数据库中找到这个节点的数据然后返回。
  • 客户端向zookeeper从节点发送写请求,节点会将znode路径和数据转发到leader节点,leader会将写请求转化为proposal提案,并且分配一个事务ID zxid,将这个proposal放到每个节点的队列中去,然后会根据先进先出的策略,将消息发送给从节点,从节点收到后会将事务写入磁盘中,然后返回ACK响应给主节点,当主节点接收到半数以上的从节点的ACK响应后,主节点会认为这个事务提交成功,完成这个事务提交,同时给所有从节点发送commit消息,从节点收到消息后,将这个事务提交。

3. Zookeeper工作原理

Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做ZAB协议。ZAB协议有两种模式,分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,ZAB就进入了恢复模式,当领导者被选举出来,且大多数server完成了和leader状态同步以后,恢复模式就结束了。状态同步,保证了leader和Server具有相同的系统状态。

4.什么是Zookeeper的文件系统

Zookeeper提供了一个多层级的节点命名空间(节点称为znode)。 与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统只有文件节点可以存放数据而目录节点不行。 Zookeeper为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得Zookeeper不能用于存放大量的数据,每个节点的存放数据上限为1M。

5. 集群中为什么要有主节点

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

6. Zookeeper怎么保证主从节点的状态同步

Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做ZAB协议。ZAB协议有两种模式,分别是恢复模式(选主模式)和广播模式(同步)。当服务启动或者在领导者崩溃后,ZAB就进入了恢复模式,当领导者被选举出来,且大多数server完成了和leader的状态同步,恢复模式就结束了。状态同步保证了leader和server具有相同的系统状态。

7. 什么是ZAB协议

ZAB协议是为了分布式协调服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议。ZAB协议包括两种基本的模式:崩溃恢复和消息广播
当整个Zookeeper集群刚刚启动或者leader服务器宕机,重启或者网络故障导致不存在过半的服务器和leader服务器保持正常通信时,所有 进程进入崩溃恢复模式。首先选举产生新的leader服务器,然后集群中follower服务器开始和新的leader服务器进行数据同步,当集群中超过半数机器和该leader服务器完成数据同步之后,退出恢复模式进入消息广播模式,leader服务器开始接收客户端的事务请求生成事务提案来进行事务请求处理。

8. ZAB和Paxos算法的联系和区别

相同点:

  1. 两者都存在一个类似于Leader进程的角色,由其负责协调多个follower进程的运行。
  2. Leader进程都会等待超过半数的follower做出正确的反馈后,才会将一个提案进行提交。
  3. ZAB协议中,每个proposal中都包含一个epoch值来代表当前的leader周期,Paxos中名字为Ballot。

不同点:

  1. ZAB用来构建高可用的分布式数据主备系统 ,Paxos是用来构建分布式一致性状态机系统。

9. 四种类型的数据节点Znode

  1. persistent——持久节点:除非手动删除,否则节点一直存在于zookeeper上。
  2. ephemeral——临时节点:临时节点的生命周期和客户端会话绑定,一旦客户端会话失效,
  3. persistent-sequential——持久顺序节点:基本特性同持久节点,只是增加了顺序属性,节点名后边追加一个由父节点维护的自增整形数字。
  4. ephemeral-sequential——临时顺序节点:基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。

10. 什么是Zookeeper的通知机制

client端会对某个znode建立一个watcher事件,当该znode发生变化时,这些client会收到zk的通知,然后client可以根据znode变化来做出业务上的改变。

11. Zookeeper中服务器角色有哪些?

Leader

 1. 事务请求的唯一调度和处理者,保证集群事务处理的顺序性。2. 集群内部各服务的调度者。

Follower

  1. 处理客户端的非事务请求,转发事务请求给Leader服务器。2. 参与事务请求Proposal投票3. 参与Leader选举

Observer

   1.在不影响集群事务处理能力的基础上提升集群的非事务处理能力。2. 处理客户端的非事务请求,转发事务请求给Leader服务器。3. 不参与任何形式的投票。 

12. Zookeeper下Server工作状态

服务器具有四种状态:Looking、Following、Leading、Observing
Looking : 寻找Leader状态,当服务器处于该状态时,他会认为当前集群中,没有Leader。因此,需要进入Leader选举状态。
Following: 跟随者状态,表明当前服务器角色是Follower。
Leading:领导者状态,表明当前服务器角色是Leader。
Observing:观察者状态,表明当前服务器角色是Observer。

13. Zookeeper是如何保证事务的顺序一致性的

Zookeeper采用全局递增的事务ID来标识,所有的proposal都在被提出的时候加上了zxid。当新产生proposal的时候,会依据数据库的两阶段过程,首先向其他server发出事务执行请求,如果半数的机器都能执行并且执行成功,那么就会开始执行。

14. 集群最少要几台机器?集群规则是怎样的

最少要三台,规则为2N+1

15. Zookeeper节点宕机如何处理

Zookeeper本身也是集群,推荐配置不少于3台服务器。Zookeeper自身也要保证当一个节点宕机时,其他节点继续提供服务。
如果是一个Follower宕机,还有2台服务器提供服务,因为Zookeeper上的数据有多个副本,数据并不会丢失。
如果是一个Leader宕机,Zookeeper会选举出新的Leader。
ZK集群的机制是只要超过半数的节点正常,集群就能正常提供服务。只有在zk节点挂的太多时,只剩一半或者不到一半节点能工作,集群才失效,所以:

  • 3个节点的cluster可以挂掉1个节点。
  • 2个节点的cluster不能挂掉任何节点。

16. Eureka和Zookeeper区别

  • 一致性模型与CAP定理取舍
    Eureka: 遵循AP原则,在网络分区发生时,Eureka优先保证服务的可用性,即使返回过时的信息。它通过自我恢复和客户端缓存机制来提高可用性,牺牲了一定程度的数据强一致性。Eureka提供了最终一致性模型,即所有节点上的服务注册信息最终会达到一致状态,但在短时间内可能存在差异。
    Zookeeper:遵循CP原则(一致性与分区容错性)。Zookeeper保证了数据的一致性,即使在部分网络分区的情况下,也确保不会返回错误的数据。这得益于其严格的Leader选举和事务日志复制机制。然而,在某些故障场景下,如Leader选举期间,服务的可用性可能会受到影响。
  • 架构与容错能力
    Eureka:采用客户端-服务器模型,客户端作为服务实例向Eureka服务器注册自己的信息,并定期发送心跳以续约。Eureka服务器之间通过副本数据的同步来实现高可用性和容错性。Eureka通过区域感知和自我保护机制来应对网络分区,即使部分节点故障,也能保持服务的可用性。
    Zookeeper:为主从结构,包含Leader节点和Follower节点。当Leader节点故障时,剩余节点会重新进行选举,选举过程中服务可能不可用。选举完成后,新Leader会与Follower节点进行数据同步,然后恢复服务。Zookeeper通过集群模式提高容错能力,但单个节点故障可能影响整个集群的服务。

相关文章:

zookeeper面试题

1. 什么是zookeeper zookeeper是一个开源的 分布式协调服务。他是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。 Zooke…...

Linux学习笔记13---GPIO 中断实验

中断系统是一个处理器重要的组成部分,中断系统极大的提高了 CPU 的执行效率,本章会将 I.MX6U 的一个 IO 作为输入中断,借此来讲解如何对 I.MX6U 的中断系统进行编程。 GIC 控制器简介 1、GIC 控制器总览 I.MX6U(Cortex-A)的中断控制器…...

[Redis][Hash]详细讲解

目录 0.前言1.常见命令1.HSET2.HGET3.HEXISTS4.HDEL5.HKEYS6.HVALS7.HGETALL8.HMGET9.HLEN10.HSETNX11.HINCRBY12.HINCRBYFLOAT 2.内部编码1.ziplist(压缩链表)2.hashtable(哈希表) 3.使用场景4.缓存方式对比1.原⽣字符串类型2.序列化字符串类型3.哈希类型 0.前言 在Redis中&am…...

上半年亏损扩大/百亿资产重组终止,路畅科技如何“脱困”?

在智能网联汽车市场形势一片大好的前提下,路畅科技上半年的营收却出现了下滑,并且亏损也进一步扩大。 2024年半年度报告显示,路畅科技营业收入1.35亿元,同比下滑7.83%;实现归属上市公司股东的净利润为亏损2491.99万元…...

协议IP规定,576字节和1500字节的区别

576字节和1500字节的区别主要在于它们是IP数据报在数据链路层中的最大传输单元(MTU)的不同限制。‌ ‌576字节‌:这个数值通常与IP层(网络层)的数据报有关,它指的是在不进行分片的情况下,IP数据…...

对抗攻击的详细解析:原理、方法与挑战

对抗攻击的详细解析:原理、方法与挑战 对抗攻击(Adversarial Attack)是现代机器学习模型,尤其是深度学习模型中的一个关键安全问题。其本质在于,通过对输入数据添加精微的扰动,人类难以察觉这些扰动&#…...

Python办公自动化教程(003):PDF的加密

【1】代码 from PyPDF2 import PdfReader, PdfWriter# 读取PDF文件 pdf_reader PdfReader(./file/Python教程_1.pdf) pdf_writer PdfWriter()# 对第1页进行加密 page pdf_reader.pages[0]pdf_writer.add_page(page) # 设置密码 pdf_writer.encrypt(3535)with open(./file/P…...

python全栈学习记录(十七)logging、json与pickle、time与datatime、random

logging、json与pickle、time与datatime、random 文章目录 logging、json与pickle、time与datatime、random一、logging二.json与pickle三.time与datatime四.random 一、logging logging模块用来记录日志信息。 import logging # 进行基本的日志配置 logging.basicConfig( fi…...

【艾思科蓝】JavaScript在数据可视化领域的探索与实践

【ACM出版 | EI快检索 | 高录用】2024年智能医疗与可穿戴智能设备国际学术会议(SHWID 2024)_艾思科蓝_学术一站式服务平台 更多学术会议请看 学术会议-学术交流征稿-学术会议在线-艾思科蓝 目录 引言 JavaScript可视化库概览 D3.js基础入门 1. 引入…...

【标准库的典型内容】std::declval

一、 d e c l v a l declval declval的基本概念和常规范例 s t d : : d e c l v a l std::declval std::declval 是 C 11 C11 C11标准中出现的一个函数模板。这个函数模板设计的比较奇怪(没有实现,只有声明),因此无法被调用&…...

深入了解package.json文件

在前端项目开发中,我们经常会遇到package.json文件。这个文件不仅是一个简单的配置文件,它还承担了项目管理的重任。下面,我们将深入探讨package.json文件的各个字段和作用,并通过实例来帮助你更好地理解和使用它。 package.json…...

【基础知识】网络套接字编程

套接字 IP地址 port(端口号) socket(套接字) socket常见API //创建套接字 int socket(int domain, int type, int protocol); //绑定端口 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); //监听套接字…...

小程序地图展示poi帖子点击可跳转

小程序地图展示poi帖子点击可跳转 是类似于小红书地图功能的需求 缺点 一个帖子只能有一个点击事件,不适合太复杂的功能,因为一个markers只有一个回调回调中只有markerId可以使用。 需求介绍 页面有地图入口,点开可打开地图界面地图上展…...

传统到AI 大数据分析的演变,颠覆智慧水电的未来?

传统到AI 大数据分析的演变,颠覆智慧水电的未来? 前言传统到AI 大数据分析的演变 前言 水电作为一种重要的能源形式,一直在我们的生活中扮演着至关重要的角色。而如今,随着科技的飞速发展,智慧水电和 AI 大数据应用的…...

while语句

1.while使用 打印1-10 #include<stdio.h> int main() {int a 1;while (10 > a){printf("%d\n", a);a 1;}return 0; } 2.while语句中的break&#xff0c;continue break&#xff1a; 跳出while语句 #include<stdio.h> int main() {int a 0;wh…...

机器学习(西瓜书)第 10 章 降维与度量学习

10.1 k近邻学习kNN k 近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法,其工作机制非常简单&#xff1a;给定测试样本&#xff0c;基于某种距离度量找出训练集中与其最靠近的k个训练样本&#xff0c;然后基于这k个 “邻居”的信息来进行预测.通常&#xff0c;在…...

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Halo博客平台

828华为云征文 | 云服务器Flexus X实例&#xff0c;Docker集成搭建Halo博客平台 Halo博客平台是一款基于Java的开源博客系统&#xff0c;以其简单易用、功能强大、美观大方等特点而受到广泛欢迎&#xff0c;采用了多种先进的技术框架&#xff0c;包括Freemarker模板引擎、Vue.j…...

Android carrier_list.textpb 和apns-conf.xml 配置文件参考

简介 针对SIM 的APN配置是在apns-conf.xml,而Google源码中有apns-full-conf.xml案例参考,是加入了carrier_id的统一配置,就不用单独的一张张卡配了。 apns-conf.xml和apns-full-conf.xml有什么区别? 在于它们包含的配置内容和复杂性,full包含了carrier_id字段。 详细代…...

二期 1.4 Nacos安装部署 - Window版

本文目录 Nacos支持三种部署模式环境准备下载Nacos启动登录服务注册与查看Nacos支持三种部署模式 单机模式 - 用于测试和单机试用。集群模式 - 用于生产环境,确保高可用。多集群模式 - 用于多数据中心场景。以 Window单机模式 抛转引玉,其它部署方式参考官方文档: https://n…...

vue3基础九问,你会几问

1. Vue是什么&#xff1f; Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它的核心库只关注视图层&#xff0c;采用自下而上的增量开发设计&#xff0c;这使得你可以将 Vue 轻松地整合到现有的项目中&#xff0c;或者与其他前端库一起使用。Vue 的目标是通过提供反…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…...

鸿蒙Navigation路由导航-基本使用介绍

1. Navigation介绍 Navigation组件是路由导航的根视图容器&#xff0c;一般作为Page页面的根容器使用&#xff0c;其内部默认包含了标题栏、内容区和工具栏&#xff0c;其中内容区默认首页显示导航内容&#xff08;Navigation的子组件&#xff09;或非首页显示&#xff08;Nav…...