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

大数据技术之Zookeeper(1)

目录

Zookeeper 入门

概述

Zookeeper的主要特点包括:

Zookeeper的应用场景:

Zookeeper的基本概念:

架构:

Zookeeper工作机制

Zookeeper数据结构

Znode(Zookeeper Node)

Znode的类型

Znode路径

Znode属性

Watcher监听器

使用示例

总结


Zookeeper 入门

概述

Zookeeper是一个分布式的、开放源码的协调服务,用于大型应用中管理和协调分布式环境下的进程。它提供了一套简单易用的API接口,使得开发者可以专注于应用程序的核心功能,而不需要关心底层的复杂实现细节。

Zookeeper的主要特点包括:

  1. 一致性:任何一台服务器上的客户端将看到同样的视图。
  2. 原子性:更新要么成功,要么失败,不会出现部分成功的状态。
  3. 单一视图:无论客户端连接到集群中的哪个服务器,其看到的服务视图都是一致的。
  4. 可靠性:一旦一个更新被确认,该更新将会被持久化。
  5. 实时性:客户端能够实时收到状态变更的通知。

Zookeeper的应用场景:

  • 配置管理:集中存储和管理配置信息,简化配置同步过程。
  • 命名服务:为分布式应用中的组件提供统一的命名服务。
  • 集群管理:监控集群中的节点状态,实现动态调整。
  • 分布式锁:提供协调机制,使得多个进程可以互斥地访问共享资源。
  • 队列管理:实现分布式环境中任务的有序处理。

Zookeeper的基本概念:

  • Znode(Zookeeper Node):Zookeeper中的数据单位,类似于文件系统中的文件和目录。
  • 路径:每个znode都有一个唯一的路径来标识它。
  • 临时节点:与会话关联的节点,会话结束时自动删除。
  • 持久节点:创建后一直存在,除非手动删除。
  • 顺序节点:创建时自动获得一个递增的序号作为路径的一部分。

架构:

Zookeeper通常以集群模式运行,集群中的每个服务器节点都保存着相同的数据副本。客户端可以通过任何一个服务器节点进行读写操作,并且能够通过心跳检测机制来保持与服务器之间的连接。

Zookeeper工作机制

Zookeeper的工作机制主要包括以下几个关键点:

  1. 角色和状态

    • 角色:在Zookeeper的集群中,各个节点有领导者(Leader)、跟随者(Follower)和观察者(Observer)三种角色。
    • 状态:服务器的状态包括领导(Leading)、跟随(Following)、观察(Observing)和寻找(Looking)四种状态。
  2. 原子广播:Zookeeper的核心是原子广播,这个机制保证了各个服务器之间的同步。实现这个机制的协议叫做Zab协议(Zookeeper Atomic Broadcast protocol)。Zab协议有两种模式:

    • 恢复模式(Recovery选主):当集群中没有领导者时,所有服务器进入恢复模式,进行领导者选举。
    • 广播模式(Broadcast同步):在领导者选举完成之后,集群进入广播模式,进行正常的读写操作。
  3. 事务ID号(zxid):为了保证事务的顺序一致性,Zookeeper采用了递增的事务ID号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。

  4. Leader选举:当领导者崩溃或者领导者失去大多数的跟随者时,Zookeeper进入恢复模式,需要重新选举出一个新的领导者,让所有的服务器都恢复到一个正确的状态。Zookeeper的选举算法有两种:

    • 基于Basic Paxos实现的
    • 基于Fast Paxos算法实现的

Paxos算法概述:从Basic Paxos到Fast Paxos及在Zookeeper中的应用

  1. Znode数据模型:Zookeeper底层是一个树形结构的数据模型,用于数据的存储。每个节点称为Znode,它可以包含数据以及子节点。Znode有两种类型:持久节点和临时节点。持久节点即使在创建它的客户端会话结束之后仍然存在;临时节点则会在客户端会话结束时被删除。

  2. Watcher监听机制:Zookeeper提供了数据的发布订阅功能,客户端可以注册Watcher来监听特定Znode的变化,如节点内容变化、子节点列表变化等。当被监听的Znode发生改变时,Zookeeper会主动通知客户端。

  3. API应用:Zookeeper提供了一系列的API来支持客户端进行数据的读取、写入、创建节点等操作。

Zookeeper数据结构

Zookeeper的数据结构是一种类似文件系统的层次结构,用于存储和管理数据。这种结构被称为Znode(Zookeeper Node)树。下面是关于Zookeeper数据结构的一些关键点:

Znode(Zookeeper Node)

Znode是Zookeeper中的数据单元,它类似于文件系统中的文件和目录。每个Znode都有一个唯一的路径来标识它,并且可以存储少量的数据(最大限制为1MB)。Znode还可以拥有子节点,就像文件系统中的目录可以包含文件和其他目录一样。

Znode的类型

Znode有两种主要类型:

  1. 持久节点(Persistent Node)

    • 创建后一直存在,直到显式删除。
    • 即使创建它的客户端会话结束,节点仍然保留。
  2. 临时节点(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…...

鸿蒙学习(四):泛型空安全模块导入导出

泛型与函数 泛型类型和函数允许创建的代码在各种类型上运行&#xff0c;而不仅支持单一类型。 泛型类和接口(Element) 类和接口可以定义为泛型&#xff0c;将参数添加到类型定义中&#xff0c;如以下示例中的类型参数Element&#xff1a; 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&#xff1a;A surveyMoving Target Tracking by Unmanned Aerial Vehicle&#xff1a;A Survey and TaxonomyVision-Based Learning for Dro…...

【ORACLE】 ORA-01691: Lob 段无法通过 8192 (在表空间 XXX_SPACE 中) 扩展

ORA-01691错误通常表示Oracle数据库在尝试扩展LOB段时无法为表空间分配更多的空间。这个问题通常由表空间容量不足引起。根据搜索结果&#xff0c;以下是几种可能的解决方案&#xff1a; 检查并扩大表空间&#xff1a;首先&#xff0c;确认表空间是否已经达到其最大容量。可以使…...

Java之静态代理与动态代理的区别

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师、爬虫、ACM算法 &#x1f525; 微信&#xff1a;zsqtcyw 联系我领取学习资料 …...

公司内网监控软件有哪些?(2024年10款最新款推荐内网监控软件)

在2024年&#xff0c;公司内网监控软件市场提供了多种选择&#xff0c;以满足不同企业的监控需求。 以下是一些值得推荐的最新款内网监控软件&#xff1a; 1. Performance Monitor 核心功能&#xff1a;不仅是一款局域网监控软件&#xff0c;更是一个全面的内网安全管理解决方…...

CUDA编程07 - 卷积的优化

一:概述 在接下来的几篇文章中,我们将讨论一组重要的并行计算模式。这些模式是许多并行算法的基础,这些算法出现在许多并行应用中。我们将从卷积开始,卷积是一种流行的数组操作,广泛应用于信号处理、数字录音、图像处理、视频处理和计算机视觉等领域。在这些应用领域中,卷…...

解锁高效办公新姿势:SSO单点登录+企业网盘完美搭配

在现代互联网环境中&#xff0c;随着企业业务的不断扩展&#xff0c;多系统、多应用的集成成为常态。为了提升用户体验&#xff0c;减少用户在不同系统间切换的繁琐&#xff0c;单点登录&#xff08;SSO, Single Sign-On&#xff09;技术应运而生。 本文将详细介绍SSO单点登录的…...

[数据集][目标检测]竹子甘蔗发芽缺陷检测数据集VOC+YOLO格式2953张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2953 标注数量(xml文件个数)&#xff1a;2953 标注数量(txt文件个数)&#xff1a;2953 标注…...

RTC碰到LXTAL低频晶振停振怎么办?

GD32F303的RTC模块框图如下图所示&#xff0c;RTC时钟源可选择HXTAL/128、LXTAL或IRC40K&#xff0c;一般为了实现更精准的RTC时间&#xff0c;MCU系统均会外挂32.768KHz LXTAL低频晶振&#xff0c;但由于低频晶振负阻抗较大&#xff0c;不容易起振&#xff0c;若外部电路布线、…...

矩阵中的最大得分(Lc3148)——动态规划

给你一个由 正整数 组成、大小为 m x n 的矩阵 grid。你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧的任意单元格&#xff08;不必相邻&#xff09;。从值为 c1 的单元格移动到值为 c2 的单元格的得分为 c2 - c1 。 你可以从 任一 单元格开始&#xff0c;并且必须…...

C++ 设计模式(4. 建造者模式)

建造者模式&#xff08;也被成为生成器模式&#xff09;&#xff0c;是一种创建型设计模式&#xff0c;软件开发过程中有的时候需要创建很复杂的对象&#xff0c;而建造者模式的主要思想是将对象的构建过程分为多个步骤&#xff0c;并为每个步骤定义一个抽象的接口。具体的构建…...

Arbitrum 和 Optimism Layer 2 扩展方案对比

Arbitrum 和 Optimism 对比分析 Arbitrum 和 Optimism 是两个以太坊 Layer 2 扩展方案&#xff0c;它们都使用了 Optimistic Rollup 技术来提升以太坊的可扩展性并降低交易成本。虽然它们有着相似的目标&#xff0c;但在架构设计、性能表现和费用结构上各有特点。 一、架构与…...

热门的蓝牙耳机中,哪种类型更受欢迎?四款热度高的开放式耳机

在如今的耳机市场中&#xff0c;开放式耳机异军突起&#xff0c;成为了众多消费者的新宠。如果你还在为传统入耳式耳机带来的不适而烦恼&#xff0c;那么开放式耳机绝对值得你一试。它不仅能让你在享受音乐的同时&#xff0c;依然可以清晰感知周围环境&#xff0c;保障你的安全…...

基于web的亚热带常见自然林病虫害识别系统——总结与展望

文章目录 一、前言二、总结三、展望参考文献致谢一、前言 这个系列也迎来了结尾,最后说一些碎碎念… 二、总结 本文首先简要介绍了卷积神经网络的基本原理,以及在亚热带常见自然林植物识别领域的研究应用现状。 其重点研究了卷积神经网络在亚热带常见自然林植物叶片病害识…...

其他自动重试的注解

除了 Retryable 注解之外&#xff0c;Spring 提供了其他注解用于自动重试方法&#xff0c;主要包括以下几个注解&#xff1a; 1. Recover Recover 注解用于定义重试次数耗尽后执行的恢复方法。当 Retryable 注解的重试次数达到上限时&#xff0c;Recover 方法会被调用。这通常…...

宠物空气净化器哪款能吸毛?希喂、米家宠物空气净化器测评分享

养猫最令人困扰的&#xff0c;就是掉毛与难以彻底消除的异味&#xff0c;这两个问题就成了养猫生活中的一大挑战。每当换季或是猫咪自我梳理时&#xff0c;家中便被一层细腻的绒毛覆盖&#xff0c;从地板到沙发&#xff0c;从床单到衣物&#xff0c;甚至是空气中都漂浮着细小的…...

讲清前端开发(入门)

前端开发&#xff1a;创建用户在网页或应用程序中直接与之交互的部分。 简单来说&#xff0c;就是负责打造用户在使用网站、网页应用或者移动应用时直接看到和与之交互的部分。打个比方&#xff0c;前端开发就像是给房子做装修。房子的框架结构已经有了&#xff0c;但是需要有…...

深入理解MySQL索引:原理、数据结构与优化策略

深入理解MySQL索引&#xff1a;原理、数据结构与优化策略 MySQL 是当今最流行的开源关系型数据库管理系统之一&#xff0c;其强大的性能与灵活的可扩展性使得它广泛应用于各种规模的应用程序中。在数据库的日常操作中&#xff0c;索引起着至关重要的作用&#xff0c;能够极大地…...

mysql数据库基础使用

1、登录mysql ① 本地登录 mysql -u 用户名 -p ②远程登入 mysql -h ip主机地址 -P 端口号 -u 用户名 -p 回车输入密码即可. 2、关于用户操作 ①创建用户 % 代表所有ip都可以访问&#xff0c;可指定主机ip create user 用户名% identified by 密码; ②修改密码 alte…...

Windows驱动管理终极指南:DriverStore Explorer完全使用手册,轻松解决磁盘空间和驱动冲突问题

Windows驱动管理终极指南&#xff1a;DriverStore Explorer完全使用手册&#xff0c;轻松解决磁盘空间和驱动冲突问题 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾经因为C盘…...

别再手动整理了!用这个油猴脚本,5分钟搞定百度网盘群文件目录导出

百度网盘群文件目录导出神器&#xff1a;油猴脚本极简操作指南 1. 为什么需要群文件目录导出工具 百度网盘作为国内主流的云存储服务&#xff0c;群组文件共享功能被广泛用于团队协作、资源分发等场景。但官方界面存在一个明显的痛点&#xff1a;当群文件数量达到数百甚至上千时…...

3个步骤让你的外文漫画秒变中文:BallonsTranslator零门槛入门指南

3个步骤让你的外文漫画秒变中文&#xff1a;BallonsTranslator零门槛入门指南 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项目地…...

8255 Boot流程深度解析与Bring Up实战避坑指南

1. 8255芯片启动流程全景解析 第一次拿到8255芯片开发板时&#xff0c;最让我困惑的就是这个"安全岛"架构的启动流程。和传统芯片不同&#xff0c;8255的启动更像是一场精心编排的交响乐&#xff0c;SAIL&#xff08;安全岛&#xff09;、APPS&#xff08;应用处理器…...

华硕笔记本终极优化神器:GHelper完整使用教程

华硕笔记本终极优化神器&#xff1a;GHelper完整使用教程 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertbook…...

【YOLO目标检测全栈实战】36 TensorRT部署实战:YOLOv8n在Jetson Orin上实现5ms推理

上周,我帮一家做无人机巡检的客户部署模型。他们的算法工程师在PC上用ONNX Runtime跑YOLOv8n,推理速度30ms,觉得“挺快”。 结果一上Jetson Orin NX,直接崩到120ms——无人机飞一圈,画面卡得像幻灯片。客户急了:“同样的模型,怎么差这么多?”我看了眼代码,发现他们还…...

ARMv8浮点运算单元与MVFR寄存器深度解析

1. ARMv8浮点运算单元架构解析在移动计算和嵌入式系统领域&#xff0c;ARMv8架构已经成为事实上的行业标准。作为其核心计算能力的重要组成部分&#xff0c;浮点运算单元(FPU)和高级SIMD(Neon)扩展的性能直接影响着机器学习、图形处理、科学计算等关键应用的执行效率。与x86架构…...

告别‘不是内部或外部命令’:手把手配置MsBuild.exe环境变量与命令行编译实战

1. 为什么命令行找不到MsBuild.exe&#xff1f; 刚装完系统或者新配置开发环境时&#xff0c;很多朋友都会遇到这个经典错误&#xff1a;在命令行输入msbuild后&#xff0c;系统提示"不是内部或外部命令"。这就像你拿着钥匙却找不到锁孔一样让人抓狂。其实这个问题90…...

draw.io桌面版终极指南:免费跨平台图表编辑解决方案

draw.io桌面版终极指南&#xff1a;免费跨平台图表编辑解决方案 【免费下载链接】drawio-desktop Official electron build of draw.io 项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop 还在为不同操作系统间的图表兼容性问题而烦恼吗&#xff1f;&am…...

从RC电路到传递函数:一个实例讲透自动控制原理的建模核心

从RC电路到传递函数&#xff1a;一个实例讲透自动控制原理的建模核心 在自动控制原理的学习中&#xff0c;许多初学者常常陷入理论与实际脱节的困境。他们能够背诵拉氏变换的定义&#xff0c;却不知道如何将一个简单的电路转化为数学模型&#xff1b;他们熟悉传递函数的公式&am…...