大数据技术之Zookeeper(1)
目录
Zookeeper 入门
概述
Zookeeper的主要特点包括:
Zookeeper的应用场景:
Zookeeper的基本概念:
架构:
Zookeeper工作机制
Zookeeper数据结构
Znode(Zookeeper Node)
Znode的类型
Znode路径
Znode属性
Watcher监听器
使用示例
总结
Zookeeper 入门
概述
Zookeeper是一个分布式的、开放源码的协调服务,用于大型应用中管理和协调分布式环境下的进程。它提供了一套简单易用的API接口,使得开发者可以专注于应用程序的核心功能,而不需要关心底层的复杂实现细节。
Zookeeper的主要特点包括:
- 一致性:任何一台服务器上的客户端将看到同样的视图。
- 原子性:更新要么成功,要么失败,不会出现部分成功的状态。
- 单一视图:无论客户端连接到集群中的哪个服务器,其看到的服务视图都是一致的。
- 可靠性:一旦一个更新被确认,该更新将会被持久化。
- 实时性:客户端能够实时收到状态变更的通知。
Zookeeper的应用场景:
- 配置管理:集中存储和管理配置信息,简化配置同步过程。
- 命名服务:为分布式应用中的组件提供统一的命名服务。
- 集群管理:监控集群中的节点状态,实现动态调整。
- 分布式锁:提供协调机制,使得多个进程可以互斥地访问共享资源。
- 队列管理:实现分布式环境中任务的有序处理。
Zookeeper的基本概念:
- Znode(Zookeeper Node):Zookeeper中的数据单位,类似于文件系统中的文件和目录。
- 路径:每个znode都有一个唯一的路径来标识它。
- 临时节点:与会话关联的节点,会话结束时自动删除。
- 持久节点:创建后一直存在,除非手动删除。
- 顺序节点:创建时自动获得一个递增的序号作为路径的一部分。
架构:
Zookeeper通常以集群模式运行,集群中的每个服务器节点都保存着相同的数据副本。客户端可以通过任何一个服务器节点进行读写操作,并且能够通过心跳检测机制来保持与服务器之间的连接。
Zookeeper工作机制
Zookeeper的工作机制主要包括以下几个关键点:
-
角色和状态:
- 角色:在Zookeeper的集群中,各个节点有领导者(Leader)、跟随者(Follower)和观察者(Observer)三种角色。
- 状态:服务器的状态包括领导(Leading)、跟随(Following)、观察(Observing)和寻找(Looking)四种状态。
-
原子广播:Zookeeper的核心是原子广播,这个机制保证了各个服务器之间的同步。实现这个机制的协议叫做Zab协议(Zookeeper Atomic Broadcast protocol)。Zab协议有两种模式:
- 恢复模式(Recovery选主):当集群中没有领导者时,所有服务器进入恢复模式,进行领导者选举。
- 广播模式(Broadcast同步):在领导者选举完成之后,集群进入广播模式,进行正常的读写操作。
-
事务ID号(zxid):为了保证事务的顺序一致性,Zookeeper采用了递增的事务ID号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。
-
Leader选举:当领导者崩溃或者领导者失去大多数的跟随者时,Zookeeper进入恢复模式,需要重新选举出一个新的领导者,让所有的服务器都恢复到一个正确的状态。Zookeeper的选举算法有两种:
- 基于Basic Paxos实现的
- 基于Fast Paxos算法实现的
Paxos算法概述:从Basic Paxos到Fast Paxos及在Zookeeper中的应用
-
Znode数据模型:Zookeeper底层是一个树形结构的数据模型,用于数据的存储。每个节点称为Znode,它可以包含数据以及子节点。Znode有两种类型:持久节点和临时节点。持久节点即使在创建它的客户端会话结束之后仍然存在;临时节点则会在客户端会话结束时被删除。
-
Watcher监听机制:Zookeeper提供了数据的发布订阅功能,客户端可以注册Watcher来监听特定Znode的变化,如节点内容变化、子节点列表变化等。当被监听的Znode发生改变时,Zookeeper会主动通知客户端。
-
API应用:Zookeeper提供了一系列的API来支持客户端进行数据的读取、写入、创建节点等操作。
Zookeeper数据结构
Zookeeper的数据结构是一种类似文件系统的层次结构,用于存储和管理数据。这种结构被称为Znode(Zookeeper Node)树。下面是关于Zookeeper数据结构的一些关键点:
Znode(Zookeeper Node)
Znode是Zookeeper中的数据单元,它类似于文件系统中的文件和目录。每个Znode都有一个唯一的路径来标识它,并且可以存储少量的数据(最大限制为1MB)。Znode还可以拥有子节点,就像文件系统中的目录可以包含文件和其他目录一样。
Znode的类型
Znode有两种主要类型:
-
持久节点(Persistent Node):
- 创建后一直存在,直到显式删除。
- 即使创建它的客户端会话结束,节点仍然保留。
-
临时节点(Ephemeral Node):
- 与创建它的客户端会话绑定。
- 当客户端会话结束时,该节点自动被删除。
每种类型的节点还可以进一步细分为两种:
- 顺序节点(Sequential Node):
- 创建时,Zookeeper会在节点名称的末尾添加一个递增的数字。
- 这样可以确保节点的创建顺序,并且可以用来实现一些特殊的功能,如分布式锁。
Znode路径
每个Znode都有一个唯一的路径来标识它,路径格式类似于Unix文件系统的路径。例如,/app/config 是一个Znode的路径,表示它位于/app目录下。
Znode属性
除了数据之外,每个Znode还具有一些元数据属性,包括但不限于:
- Acl(Access Control List):控制哪些客户端可以对该节点执行何种操作。
- Stat(Status):提供有关节点状态的信息,如版本号、创建时间和最后修改时间等。
Watcher监听器
Zookeeper提供了一种称为Watcher的机制,允许客户端注册监听器来监听特定Znode的更改。当被监听的Znode发生变化时(例如,数据更改、子节点的增加或删除),Zookeeper会异步地通知注册了Watcher的客户端。
使用示例
假设你有一个Zookeeper集群,你可以在根路径/下创建一个持久节点/app,并在其下创建一个临时节点/app/server1。你还可以在/app节点下创建一个带有顺序的子节点/app/leader-0000000001。这样的结构可以用于实现简单的服务发现或者作为分布式锁的基础。
总结
Zookeeper的数据结构是一种层次化的树状结构,由Znode组成。Znode可以存储数据、具有不同的生命周期,并且可以注册Watcher来监听状态变化。这种结构非常适合于构建分布式协调服务,如配置管理、服务发现、分布式锁等。
相关文章:
大数据技术之Zookeeper(1)
目录 Zookeeper 入门 概述 Zookeeper的主要特点包括: Zookeeper的应用场景: Zookeeper的基本概念: 架构: Zookeeper工作机制 Zookeeper数据结构 Znode(Zookeeper Node) Znode的类型 Znode路径 Znode属性 Wa…...
鸿蒙学习(四):泛型空安全模块导入导出
泛型与函数 泛型类型和函数允许创建的代码在各种类型上运行,而不仅支持单一类型。 泛型类和接口(Element) 类和接口可以定义为泛型,将参数添加到类型定义中,如以下示例中的类型参数Element: class CustomStack<Element>…...
无人机(Unmanned Aerial Vehicle, UAV)视觉感知论文汇总
综述类 A Survey of Object Detection for UAVs Based on Deep LearningDeep Learning for UAV-based Object Detection and Tracking:A surveyMoving Target Tracking by Unmanned Aerial Vehicle:A Survey and TaxonomyVision-Based Learning for Dro…...
【ORACLE】 ORA-01691: Lob 段无法通过 8192 (在表空间 XXX_SPACE 中) 扩展
ORA-01691错误通常表示Oracle数据库在尝试扩展LOB段时无法为表空间分配更多的空间。这个问题通常由表空间容量不足引起。根据搜索结果,以下是几种可能的解决方案: 检查并扩大表空间:首先,确认表空间是否已经达到其最大容量。可以使…...
Java之静态代理与动态代理的区别
🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主 📌 擅长领域:全栈工程师、爬虫、ACM算法 🔥 微信:zsqtcyw 联系我领取学习资料 …...
公司内网监控软件有哪些?(2024年10款最新款推荐内网监控软件)
在2024年,公司内网监控软件市场提供了多种选择,以满足不同企业的监控需求。 以下是一些值得推荐的最新款内网监控软件: 1. Performance Monitor 核心功能:不仅是一款局域网监控软件,更是一个全面的内网安全管理解决方…...
CUDA编程07 - 卷积的优化
一:概述 在接下来的几篇文章中,我们将讨论一组重要的并行计算模式。这些模式是许多并行算法的基础,这些算法出现在许多并行应用中。我们将从卷积开始,卷积是一种流行的数组操作,广泛应用于信号处理、数字录音、图像处理、视频处理和计算机视觉等领域。在这些应用领域中,卷…...
解锁高效办公新姿势:SSO单点登录+企业网盘完美搭配
在现代互联网环境中,随着企业业务的不断扩展,多系统、多应用的集成成为常态。为了提升用户体验,减少用户在不同系统间切换的繁琐,单点登录(SSO, Single Sign-On)技术应运而生。 本文将详细介绍SSO单点登录的…...
[数据集][目标检测]竹子甘蔗发芽缺陷检测数据集VOC+YOLO格式2953张3类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2953 标注数量(xml文件个数):2953 标注数量(txt文件个数):2953 标注…...
RTC碰到LXTAL低频晶振停振怎么办?
GD32F303的RTC模块框图如下图所示,RTC时钟源可选择HXTAL/128、LXTAL或IRC40K,一般为了实现更精准的RTC时间,MCU系统均会外挂32.768KHz LXTAL低频晶振,但由于低频晶振负阻抗较大,不容易起振,若外部电路布线、…...
矩阵中的最大得分(Lc3148)——动态规划
给你一个由 正整数 组成、大小为 m x n 的矩阵 grid。你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧的任意单元格(不必相邻)。从值为 c1 的单元格移动到值为 c2 的单元格的得分为 c2 - c1 。 你可以从 任一 单元格开始,并且必须…...
C++ 设计模式(4. 建造者模式)
建造者模式(也被成为生成器模式),是一种创建型设计模式,软件开发过程中有的时候需要创建很复杂的对象,而建造者模式的主要思想是将对象的构建过程分为多个步骤,并为每个步骤定义一个抽象的接口。具体的构建…...
Arbitrum 和 Optimism Layer 2 扩展方案对比
Arbitrum 和 Optimism 对比分析 Arbitrum 和 Optimism 是两个以太坊 Layer 2 扩展方案,它们都使用了 Optimistic Rollup 技术来提升以太坊的可扩展性并降低交易成本。虽然它们有着相似的目标,但在架构设计、性能表现和费用结构上各有特点。 一、架构与…...
热门的蓝牙耳机中,哪种类型更受欢迎?四款热度高的开放式耳机
在如今的耳机市场中,开放式耳机异军突起,成为了众多消费者的新宠。如果你还在为传统入耳式耳机带来的不适而烦恼,那么开放式耳机绝对值得你一试。它不仅能让你在享受音乐的同时,依然可以清晰感知周围环境,保障你的安全…...
基于web的亚热带常见自然林病虫害识别系统——总结与展望
文章目录 一、前言二、总结三、展望参考文献致谢一、前言 这个系列也迎来了结尾,最后说一些碎碎念… 二、总结 本文首先简要介绍了卷积神经网络的基本原理,以及在亚热带常见自然林植物识别领域的研究应用现状。 其重点研究了卷积神经网络在亚热带常见自然林植物叶片病害识…...
其他自动重试的注解
除了 Retryable 注解之外,Spring 提供了其他注解用于自动重试方法,主要包括以下几个注解: 1. Recover Recover 注解用于定义重试次数耗尽后执行的恢复方法。当 Retryable 注解的重试次数达到上限时,Recover 方法会被调用。这通常…...
宠物空气净化器哪款能吸毛?希喂、米家宠物空气净化器测评分享
养猫最令人困扰的,就是掉毛与难以彻底消除的异味,这两个问题就成了养猫生活中的一大挑战。每当换季或是猫咪自我梳理时,家中便被一层细腻的绒毛覆盖,从地板到沙发,从床单到衣物,甚至是空气中都漂浮着细小的…...
讲清前端开发(入门)
前端开发:创建用户在网页或应用程序中直接与之交互的部分。 简单来说,就是负责打造用户在使用网站、网页应用或者移动应用时直接看到和与之交互的部分。打个比方,前端开发就像是给房子做装修。房子的框架结构已经有了,但是需要有…...
深入理解MySQL索引:原理、数据结构与优化策略
深入理解MySQL索引:原理、数据结构与优化策略 MySQL 是当今最流行的开源关系型数据库管理系统之一,其强大的性能与灵活的可扩展性使得它广泛应用于各种规模的应用程序中。在数据库的日常操作中,索引起着至关重要的作用,能够极大地…...
mysql数据库基础使用
1、登录mysql ① 本地登录 mysql -u 用户名 -p ②远程登入 mysql -h ip主机地址 -P 端口号 -u 用户名 -p 回车输入密码即可. 2、关于用户操作 ①创建用户 % 代表所有ip都可以访问,可指定主机ip create user 用户名% identified by 密码; ②修改密码 alte…...
Bootstrap 下拉菜单:全面解析与应用指南
Bootstrap 下拉菜单:全面解析与应用指南 引言 Bootstrap 是一个流行的前端框架,它提供了丰富的组件和工具来帮助开发者快速构建响应式、美观的网页。其中,下拉菜单是 Bootstrap 中一个常用且重要的组件,它能够帮助用户在有限的空间…...
GLM-4.7-Flash效果展示:中文诗歌格律检测+不合格处自动标注与修改建议
GLM-4.7-Flash效果展示:中文诗歌格律检测不合格处自动标注与修改建议 1. 引言:当AI遇见古典诗词 你有没有想过,让一个AI来当你的诗词老师?不是那种只会背诗的AI,而是能一眼看出你写的诗哪里平仄不对、哪里押韵出错的…...
Qwen2.5-14B-Instruct+Pixel Script Temple:高校戏剧系AI辅助教学实战案例
Qwen2.5-14B-InstructPixel Script Temple:高校戏剧系AI辅助教学实战案例 1. 项目背景与价值 在高校戏剧教育领域,剧本创作一直是教学难点。传统教学模式下,学生需要花费大量时间在格式规范、基础场景构建等基础性工作上,而教师…...
网络通信技术基础知识,网络通信技术数据包介绍
网络通信技术是关键技术之一,对于网络通信技术,我们应对其有所了解。为增加大家对网络通信技术的认识,本文将对网络通信技术的数据包结构和原理予以介绍。如果你对网络通信技术存在兴趣,不妨继续往下阅读哦。 在网络通信中, "…...
2026降AI工具实测:性价比/效果/安全选品指南
花了整整一周时间把市面5款主流降AI工具全维度测了一遍,从处理效果、定价、安全性三个核心维度做了横向对比。结论放在最前面:综合实力最强、毕业生首选的是SpeedAI科研小助手,性价比拉满,新手还能免费试用,完全适配绝…...
千问3.5-2B快速部署:Docker镜像一键run,7860端口自动监听,无需端口映射配置
千问3.5-2B快速部署:Docker镜像一键run,7860端口自动监听,无需端口映射配置 1. 千问3.5-2B模型介绍 千问3.5-2B是Qwen系列的小型视觉语言模型,它能够同时理解图片和生成文本。这个模型特别适合需要结合视觉和语言理解的任务场景…...
2026前端面试题
1.vue的通信方式Vue组件通信方式根据组件间的关系(父子、兄弟、跨级、任意组件)可分为多种方案。一、父子组件通信props(父-子)父组件通过属性向子组件传递数据,子组件通过defineProps接收<!-- 父组件 --> <C…...
MULTISIM仿真揭秘:如何设计高可靠性的光耦隔离PMOS驱动电路
1. 光耦隔离PMOS驱动电路的设计挑战 在工业控制和高压隔离场景中,PMOS驱动电路的设计往往面临诸多挑战。我曾在多个项目中遇到过MOS管因静电击穿而损坏的情况,也经历过因开关频率不足导致系统性能下降的尴尬。这些问题归根结底都与MOS管的特性有关。 MOS…...
小白程序员必看:大模型“语义崩塌”陷阱与收藏攻略!
本文深入解析了“语义崩塌”现象,即在大模型处理海量数据时,向量语义失去区分度导致搜索失效。以斯坦福RAG研究为例,揭示高维空间下“维度灾难”如何导致相关性计算失效,影响企业级应用。文章提出分层检索和基于图谱的检索作为解决…...
别再只会用百度搜了!手把手教你用site语法精准锁定CSDN、知乎等网站的技术文章
技术搜索的艺术:用site语法打造高效信息获取系统 每次打开搜索引擎,输入技术关键词后,铺天盖地的结果中真正有用的内容却寥寥无几——这可能是大多数开发者都经历过的困扰。广告推广、低质量转载、过时教程混杂其中,而真正优质的C…...
