分布式集群框架——有关zookeeper的面试考点



3.掌握Zookeeper的概念
当涉及到大规模分布式系统的协调和管理时,Zookeeper是一个非常重要的工具。
1. 分布式协调服务:Zookeeper是一个分布式协调服务,它提供了一个高可用和高性能的环境,用于协调和同步分布式系统中的各个节点。它通过提供共享的命名空间和一致性的数据模型来简化开发人员构建分布式应用程序的任务。
2. 数据模型:Zookeeper的数据模型是一个层次化的树形结构,类似于文件系统的目录结构。每个节点都可以存储一个小数据量,称为Znode。Znodes可以被观察和监听,以便在其状态发生变化时通知相关方。
3. 命名空间:Zookeeper使用类似文件路径的命名空间来组织Znodes。根节点表示为“/”,其他节点在此基础上进行命名。例如,“/app1”表示名为“app1”的节点。
4. 观察者机制:Zookeeper允许客户端注册对某个节点的观察,以便在该节点发生变化时获得通知。这种机制可用于实现分布式系统中的发布/订阅模式或实时数据更新。
5. 临时节点:除了持久节点外,Zookeeper还支持临时节点。当创建临时节点的客户端与Zookeeper会话断开连接时,该节点将被自动删除。这种特性常用于实现故障检测和动态服务发现。
6. 有序节点:Zookeeper还提供有序节点的功能。有序节点是根据创建顺序分配一个唯一的递增编号。这对于实现队列、选举等场景非常有用。
7. 集群模式:Zookeeper以集群模式运行,其中包含一组Zookeeper服务器。这些服务器通过选举机制选择一个leader,负责处理客户端的请求,并确保集群中的数据一致性。
总的来说,Zookeeper是一个高度可靠的分布式协调服务,提供了易于使用的数据模型和丰富的功能,使得开发人员能够构建可靠的分布式系统。它的核心概念和功能可以帮助开发人员解决分布式系统中的同步、协调和一致性等问题。

4.掌握Zookeeper文件系统的特点

Zookeeper的数据模型是一个层次化的树形结构,类似于文件系统的目录结构。下面是Zookeeper文件系统的一些特点:
1. 命名空间:Zookeeper使用类似文件路径的命名空间来组织数据节点(Znode)。根节点表示为“/”,其他节点在此基础上进行命名。例如,“/app1”表示名为“app1”的节点。
2. 数据节点:每个Znode都可以存储一个小数据量,通常是字符串。Znodes可以包含其他子节点,从而构建出树形结构。Zookeeper提供了临时节点和持久节点两种类型,具有不同的生命周期和行为。
3. 持久节点:持久节点在创建后会一直存在,直到被显式删除。它们适用于存储长期有效的数据,例如配置信息、元数据等。持久节点的数据在设置后不会自动消失,除非通过操作删除。
4. 临时节点:临时节点的生命周期与客户端会话相关联。当创建临时节点的客户端会话结束(例如断开连接)时,该节点将被自动删除。临时节点常用于实现临时性的状态标记、会话管理等功能。
5. 有序节点:Zookeeper还提供了有序节点的支持。有序节点是按照创建顺序分配唯一递增的编号。有序节点的编号可用于实现队列、排序等场景。例如,多个客户端可以创建具有相同前缀的有序节点,在节点的路径中包含创建顺序。
6. 观察者机制:Zookeeper允许客户端注册对某个节点的观察,以便在该节点的数据发生变化时得到通知。观察者机制可用于实现通知、发布/订阅模式等功能。当被观察的节点发生变化时,Zookeeper会通知所有相关观察者。
7. 一致性保证:Zookeeper提供了强一致性的访问保证。这意味着无论客户端连接到哪个Zookeeper服务器,它们都能看到完全相同的视图。所有更新操作都经过集群中的多个服务器进行协调和同步,以确保数据的一致性。
总的来说,Zookeeper文件系统具有层次化的命名空间、节点类型的灵活性(持久节点、临时节点、有序节点)以及强一致性保证。这些特点使得Zookeeper能够提供可靠的分布式协调服务,并帮助开发人员构建可靠的分布式应用程序。
5.掌握Zookeper用途
Zookeeper是一个广泛应用于分布式系统的协调服务,其用途广泛且多样化。下面是一些Zookeeper的常见用途:
1. 分布式协调:Zookeeper提供了分布式环境中进行协调的轻量级机制。它可以用于实现分布式锁、分布式队列、分布式共享配置等功能,确保各个节点之间的同步和一致性。
2. 配置管理:Zookeeper可用于集中管理分布式系统的配置信息。应用程序可以将配置信息存储在Zookeeper的节点中,并通过监听机制获取实时的配置更新通知,实现动态配置管理。
3. 命名服务:Zookeeper可以作为分布式系统的命名服务,类似于DNS(Domain Name System)。它可以提供统一的命名空间,使得各个节点可以根据特定路径访问和查找其他节点。
4. 集群管理:Zookeeper可以用于管理分布式系统中的集群。通过选举机制,Zookeeper可以选择一个领导者(leader)来统一管理和处理客户端请求,确保集群中的高可用性和一致性。
5. 动态服务发现:Zookeeper支持动态注册和发现服务。服务提供者可以将自己注册为Zookeeper的一个节点,而服务消费者可以使用Zookeeper来发现可用的服务提供者节点,实现动态的服务调用和负载均衡。
6. 分布式协议:许多分布式协议(如Chubby、Hadoop等)使用Zookeeper作为底层的协调服务。它们利用Zookeeper的稳定性和一致性保证来实现分布式算法和协议。
总的来说,Zookeeper在分布式系统中扮演着重要的角色,用于提供协调、同步和管理功能。它能够解决分布式系统中的各种问题,包括分布式锁、配置管理、命名服务、集群管理等,帮助开发人员构建可靠和高性能的分布式应用程序。
6.掌握Zookeeper的选举机制

Zookeeper的选举机制是它实现分布式一致性的关键组成部分。选举机制用于在Zookeeper集群中选择一个领导者(leader),负责处理客户端的请求并确保集群中的数据一致性。下面是Zookeeper选举机制的一般过程:
1. 选举角色:在Zookeeper集群中,每个服务器都可以担任两种角色之一:领导者(leader)或跟随者(follower)。领导者负责处理客户端的写请求,并将更新操作复制到其他服务器上,以确保数据一致性。跟随者接收来自领导者和其他跟随者的复制操作。
2. 选举触发:当一个Zookeeper服务器启动或检测到领导者宕机时,它就会发起一次选举过程。这个过程旨在选择一个新的领导者来维持集群的正常运行。
3. 选举过程:选举过程由一系列轮次组成,每个轮次包含多个阶段。以下是一个简化的选举过程示例:
a. 提出选票:当服务器发起选举后,它将尝试成为领导者。它会发送选票给其他服务器,包含自己的身份信息和提案(Proposal)。
b. 支持提案:其他服务器收到选票后,会比较提案的内容并决定是否支持。如果发现有更高编号的提案,服务器将放弃自己的提案并支持更高编号的提案。
c. 确认领导者:当一个服务器获得超过半数的支持后,它将成为新的领导者,并向其他服务器发送通知。
4. 选举完成:一旦新的领导者被选举出来,跟随者将更新自己的状态并开始与领导者保持同步。选举过程结束后,集群中的所有服务器将知道新的领导者,并按照领导者的指示进行操作。
Zookeeper的选举机制确保了在集群中只有一个领导者,防止数据冲突和不一致性。选举机制还具有快速响应和容错性,即使集群中的某个服务器宕机或网络出现问题,选举仍然可以继续进行,确保集群的稳定运行。
相关文章:
分布式集群框架——有关zookeeper的面试考点
3.掌握Zookeeper的概念 当涉及到大规模分布式系统的协调和管理时,Zookeeper是一个非常重要的工具。 1. 分布式协调服务:Zookeeper是一个分布式协调服务,它提供了一个高可用和高性能的环境,用于协调和同步分布式系统中的各个节点…...
Spring Cloud Gateway的快速使用
环境前置搭建Nacos:点击跳转 Spring Cloud Gateway Docs 新建gateway网关模块 pom.xml导入依赖 <!-- 网关 --> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifact…...
VSCode-C++环境配置+Cmake
文章目录 一、环境配置二、Win10 Cmake 一、环境配置 转载链接 二、Win10 Cmake 创建CMakeLists.txt cmake_minimum_required(VERSION 3.26) project(graph_algorithm)set(CMAKE_CXX_STANDARD 17)add_executable(main main.cppshared_variable.cpp )cmake . -G "MinGW…...
python爬虫14:总结
python爬虫14:总结 前言 python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 申明 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产生不好…...
扩散模型实战(八):微调扩散模型
推荐阅读列表: 扩散模型实战(一):基本原理介绍 扩散模型实战(二):扩散模型的发展 扩散模型实战(三):扩散模型的应用 扩散模型实战(四…...
Android 全局控件属性设置
一 使用需求: 如 设置全局字体、全局文本属性设置 二 实现方式: 在App使用的主题中,添加属性及属性值 如给所有的文本设置属性,注释部分作用是设置应用全局字体 <style name"Theme.AppDemo" parent"Base.Theme.AppDemo&q…...
下面是实践百度飞桨上面的pm2.5分类项目_logistic regression相关
part1:数据的引入,和前一个linear regression基本是一样 part2:数据解析——也就是数据的“规格化” 首先,打算用dataMat[]和labelMat[]数据存储feature和label,并且文件变量fr 然后,是这个for line in fr.readlines()循环&#…...
阿里云误删Python后域yum报错解决方案
阿里云误删Python后域yum报错解决方案 1:找回所有依赖 这里依赖可能很多,也搞不清楚有哪些,建议买一台临时服务器,系统选择跟你当前的系统一致的,配置选最低就行 2:登录临时服务器,创建临时文件夹 mkdir /usr/local/yum-fix cd /usr/local/yum-fix3:查找并下载所有云依赖 r…...
unordered-------Hash
✅<1>主页:我的代码爱吃辣📃<2>知识讲解:数据结构——哈希表☂️<3>开发环境:Visual Studio 2022💬<4>前言:哈希是一种映射的思想,哈希表即使利用这种思想,…...
数据仓库总结
1.为什么要做数仓建模 数据仓库建模的目标是通过建模的方法更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到最佳平衡点。 当有了适合业务和基础数据存储环境的模型(良好的数据模型),那么大数据就能获得以下好处&…...
hadoop学习:mapreduce入门案例二:统计学生成绩
这里相较于 wordcount,新的知识点在于学生实体类的编写以及使用 数据信息: 1. Student 实体类 import org.apache.hadoop.io.WritableComparable;import java.io.DataInput; import java.io.DataOutput; import java.io.IOException;public class Stude…...
自学TypeScript-基础、编译、类型
自学TypeScript-基础、编译、类型 TS 编译为 JS类型支持类型注解基础类型typeof 运算符高级类型class 类构造函数和实例方法继承可见性只读 类型兼容性交叉类型泛型泛型约束多个泛型泛型接口泛型类泛型工具 索引签名类型映射类型索引查询(访问)类型 类型声明文件 TypeScript 是…...
nginx配置https
1.安装nginx 安装完成后检查 nginx -V2.申请证书与上传 阿里云申请免费的证书 然后上传到某个目录 3.修改nginx配置 #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid …...
windows Etcd的安装与使用
一、简介 etcd是一个分布式一致性键值存储,其主要用于分布式系统的共享配置和服务发现。 etcd由Go语言编写 二、下载并安装 1.下载地址: https://github.com/coreos/etcd/releases 解压后的目录如下:其中etcd.exe是服务端,e…...
【py】为什么用 import tkinter 不能运行
为什么用 import tkinter 不能运行 ━━━━━━━━━━━━━━━━━━━━━━ 要显示一个信息框,为什么用 import tkinter 不能运行,改成from tkinter import messagebox 就可以运行了? 可能是因为您的代码中只使用了 messagebox 这个模…...
【深度学习】实验04 交叉验证
文章目录 交叉验证划分自定义划分K折交叉验证留一交叉验证留p交叉验证随机排列交叉验证分层K折交叉验证分层随机交叉验证 分割组 k-fold分割留一组分割留 P 组分割随机分割时间序列分割 交叉验证 # 导入相关库# 交叉验证所需函数 from sklearn.model_selection import train_t…...
whisper语音识别部署及WER评价
1.whisper部署 详细过程可以参照:🏠 创建项目文件夹 mkdir whisper cd whisper conda创建虚拟环境 conda create -n py310 python3.10 -c conda-forge -y 安装pytorch pip install --pre torch torchvision torchaudio --extra-index-url 下载whisper p…...
java太卷了,怎么办?
忧虑: 马上就到30岁了,最近对于自己职业生涯的规划甚是焦虑。在网站论坛上,可谓是哀鸿遍野,大家纷纷叙述着自己被裁后求职的艰辛路程,这更加加深了我的忧虑,于是在各大论坛开始“求医问药”,想…...
android多屏触摸相关的详解方案-安卓framework开发手机车载车机系统开发课程
背景 直播免费视频课程地址:https://www.bilibili.com/video/BV1hN4y1R7t2/ 在做双屏相关需求开发过程中,经常会有对两个屏幕都要求可以正确触摸的场景。但是目前我们模拟器默认创建的双屏其实是没有办法进行触摸的 修改方案1 静态修改方案 使用命令…...
微信小程序 实时日志
目录 实时日志 背景 如何使用 如何查看日志 注意事项 实时日志 背景 为帮助小程序开发者快捷地排查小程序漏洞、定位问题,我们推出了实时日志功能。从基础库2.7.1开始,开发者可通过提供的接口打印日志,日志汇聚并实时上报到小程序后台…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...
