zookeeper 常见面试题和答案

zookeeper 使用场景

1.分配式配置中心,如kafka 元数据等等,注册中心

2.分布式协调服务,比如可以通过watch 机制来协调各个节点的行为

3.分布式锁/队列,可以实现分布式的数据结构

zookeeper 实现分布式锁

1.两种方案

zookeeper分布式锁的两种实现-CSDN博客

zookeeper 有哪些类型节点

临时节点(会话,失去就消失)

永久结点

临时序列节点

永久序列结点

zookeeper 是cp,还是ap

通常分布式系统会保证P(分布可用性),zk作为保证分布式系统里专门保存元数据里的,选了cp,也就是保证数据的一致性,失去了可用性,在一些业务系统里,往往会使用ap,保证可用性,对于数据的一致性,会有一些取失,毕竟数据最终一致就行

如何防止脑裂的

1.首先节点要是奇数

2.选举成leader要得到一半的选票

如果有leader 节点因为网络原因,没有感知到已经有新leader产生后,即使老leader能写,老leader 写请求复制到其它节点时,也会因为epoch,导致写入失败,然后变成follower

数据结构是啥样的

树型结构,类型linux 文件系统

zk的节点,分别有哪些角色

leader 节点

follower 和observer 节点

observer 节点没有投票权

这里想一下为啥没有投票权,主要是因为如果zk cluster 节点多的话,每个写请求都要超过一半的节点写入才能认为是成功,影响效率

zk读写分别是哪些节点

leader 节点负责读写

follower 负责转发写和直接读

observer 负责转发写和直接读

常用的分布式组件失去zookeeper 异常会有哪影响

zk watch 机制

理解Zookeeper的Watch机制 - 掘金

zk 数据一致性的协议

ZAB 协议的基本工作原理:

  1. **Leader 选举:**在 ZooKeeper 集群启动时,各个节点会通过选举算法选出一个主节点(Leader)。这个主节点负责处理所有的写操作。

  2. **写操作处理:**所有的写操作都必须经过主节点。当一个客户端请求写操作时,它会发送给主节点。主节点接收到写操作后,会生成一个全局唯一的递增的事务 ID,并将这个写操作转化成一个提案(proposal)。

  3. **提案广播:**主节点会将这个提案发送给所有的从节点(Followers)。从节点收到提案后,会进行投票,表明它们是否同意这个提案。

  4. **过半复制:**一旦主节点收到过半数从节点的确认投票,就意味着这个提案被通过。主节点会将这个提案写入日志,并向所有的从节点发送提交消息。

  5. **提交消息:**从节点收到提交消息后,会将主节点的写操作应用到自己的状态机中。这样,所有的节点都达到了相同的状态,数据保持一致。

  6. **故障恢复:**如果主节点出现故障,剩余的从节点会再次进行选举,选出新的主节点来接管写操作。

ZAB 协议的关键特性包括原子广播、阻塞式一致性和主从复制。通过这些特性,ZooKeeper 能够保证数据的一致性和顺序性,即使在节点故障或网络分区的情况下也能够保持高可用性。这使得 ZooKeeper 成为许多分布式系统中的重要组件,用于实现诸如配置管理、分布式锁、命名服务等功能。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Failed to start docker.service: Unit is not loaded properly: Invalid argument.

Failed to start docker.service: Unit is not loaded properly: Invalid argument. 未知原因:docker服务无法正常load 解决方式: 卸载docker, 删除docker.service 重新安装docker Docker是一种相对使用较简单的容器,我们可以通过…

【QT+QGIS跨平台编译】063:【qca-softstore+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、qca-softstore介绍二、QCA下载三、文件分析四、pro文件五、编译实践5.1 windows下编译5.2 linux下编译5.3 macos下编译一、qca-softstore介绍 QCA-Softstore 是一个软件证书存储插件,它是为 QCA 框架设计的。这个插件提供了一个简单的持久化证书…

SpringCloud Alibaba Sentinel 规则持久化

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第十七篇,即使用 Sentinel 实现规则持久化。 二、概述 从前面我们做的实验可知,…

循环双链表算法库构建

学习贺老师数据结构数据结构之自建算法库——循环双链表_数据结构编写一个程序linklist.cpp-CSDN博客 模仿单链表逻辑,实现双链表, 大差不差 v1.0: 实现基本功能 V1.0 1.主要功能: //(1)头插法建立循环双链表 void Create_Double_CyclicList_Head(DoubleLinkList_Cyclic *&am…

相机标定——四个坐标系介绍

世界坐标系(Xw,Yw,Zw) 世界坐标系是一个用于描述和定位三维空间中物体位置的坐标系,通常反映真实世界下物体的位置和方向。它是一个惯性坐标系,被用作整个场景或系统的参考框架。在很多情况下,世界坐标系被认为是固定不变的,即它…

51单片机之串口通信

目录 1.串口简介 1.1TXD和RXD 1.2通讯接口 1.3通信方式 1.4 51单片机的UART模式 2.串口配置 2.1寄存器简介 SCON寄存器配置 PCON配置 2.2代码配置串口 2.2.1 配置串口发送数据 2.2.2配置电脑向单片机发送数据点亮LED 1.串口简介 串口是一个应用十分广泛的通讯接口&am…

对接穿山甲激励视频广告,收益如何?

激励视频广告一直是广告平台探索的重要广告类型,在激励任务达成或者激励视频退出时,为用户新增广告任务。“激励视频”广告满足部分用户多看广告获得更多奖励心理的需求的同时,提升了开发者广告曝光机会。进而提升了广告变现效率。#APP广告变…

复习知识点整理

零碎语法 1.导入某个文件夹的index文件,index可以省略(这里导入的是router和store文件下的index.js文件) 2.路由懒加载 this 1.在vue文件中使用router\store对象时 this:普通函数的this指向vue实例对象(在没有明确指向的时候…

C#实践作业1(类、接口、委托)

题目: 使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。…

上位机软件与美国罗克韦尔AB PLC无线以太网通讯测试

在实际系统中,同一个车间里分布多台PLC,通过上位机集中控制。通常所有设备距离在几十米到上百米不等。在有通讯需求的时候,如果布线的话,工程量较大耽误工期,这种情况下比较适合采用无线通信方式。本方案以组态王和2台…

在渲染项目instant-ngp使用代码(run.py)实现的补充说明

0 引言 最近,在做一个项目中有需要使用渲染接口,需要使用代码来实现。详细的步骤在文章instant-ngp中run.py的使用_/instant-ngp/./scripts/run.py", line 25, in https://blog.csdn.net/fengbingchun/article/details/129770444?ops_request_misc…

【C++】继承总结

一、前言 我们众所周知的C三大特性分别为:封装、继承、多态。 封装就是将接口实现统一化,隐藏那些不同的地方,在上层函数调用体现的方式一样,如各种容器的迭代器iterator,尽管底层实现的方式不同,但是在使用…

【JVM性能调优】- GC调优实操思路

1、GC调优实操思路 前面几点所提及的都是GC调优的一些方法论以及衡量指标,但在真正需要处理GC调优时,上面几点只能给你提供辅导,并不能建立完善的调优思路,因此,接下来再一同论述GC调优的具体实操思想。 GC调优时&…

加固系统安全,防范ssh暴力破解

文章链接 加固系统安全,防范ssh暴力破解 保护实例的开源工具 – Fail2Ban

AI技术创业机会之AI基础设施与开发工具

AI基础设施与开发工具作为支撑AI技术发展与应用的关键领域,孕育着众多创业机遇。以下详述了AI基础设施与开发工具背景下AI技术的创业机会及其具体细节与内容,深入探讨各细分领域,为有志于投身这一领域的创业者提供全面、深入的商业洞察与方向…

PPOCRv3在ncnn端部署

文章目录 前言一、paddle -> pth -> pt二、pt -> pnnx -> ncnn三、ncnn模型部署参考文档 前言 之前尝试使用paddle -> onnx -> ncnn的方案,遇到了转ncnn过程中,某些层不支持的问题,经过修改ncnn模型参数,可实现…

springboot+websocket+微信小程序实现评论区功能

springbootwebsocket微信小程序实现评论区功能 WebSocketSTOMP协议具体实现1.在pom文件中添加Spring WebSocket依赖2. 创建WebSocket配置类3.接收发送消息4.前端 参考 WebSocket 1. 什么是WebSocket? WebSocket 是 HTML5 一种新的协议。它实现了浏览器与服务器全双…

深入浅出 -- 系统架构之性能优化的核心思维

“在当前的互联网开发模式下,系统访问量日涨、并发暴增、线上瓶颈等各种性能问题纷涌而至,性能优化成为了现时代开发过程中炙手可热的名词,无论是在开发、面试过程中,性能优化都是一个常谈常新的话题”。Java语言作为企业应用中的…

ArcGIS Server 安装教程

​​​​​​​ 一、环境与文件准备 1.软件环境 已安装arcgis Desktop 10.2 2.安装及授权文件 二、安装步骤 1.下载安装包和授权文件,解压后打开ArcGIS Server10.2文件夹,打开ESRI.exe。 2.点击ArcGIS for Server后的Setup,开始安装。 3.…

labelme安装和使用

源码地址: git clone https://github.com/labelmeai/labelme.git 描述 是一个图形图像注释工具,灵感来自 http://labelme.csail.mit.edu . 它是用比顿编写的,并使用QT进行图形化接口。 实例分割的VOC数据集示例。 其他例子(语义分割、B箱检测和分类)。 各种原语(多…