当前位置: 首页 > 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…...

GATK AlleleList接口介绍

在 GATK(Genome Analysis Toolkit)中,AlleleList 接口是一个用来表示等位基因(alleles)列表的接口。Allele 是遗传学中用于表示某一特定基因座的不同形式的一个基本单位。AlleleList 接口定义了一些操作,使得处理和访问一组等位基因更加方便。 AlleleList 的实现类和继承…...

直播App遭受抓包后的DDoS与CC攻击防御策略

随着直播应用的普及&#xff0c;越来越多的用户开始依赖这些平台进行娱乐和社交活动。然而&#xff0c;这也使得直播平台成为网络攻击的目标之一。其中&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击和CC&#xff08;Challenge Collapsar&#xff0c;即HTTP慢速攻…...

【xilinx】 AXI Quad SPI IP - 如果 s_axi_wstrb 不等于 0xf,则寄存器可能无法正确更新

PG153 (v3.2) 规定如下&#xff1a; “AXI4-Lite 写访问寄存器由 32 位 AXI 写数据 (* _wdata ) 信号更新&#xff0c;并且不受 AXI 写数据选通 (* _wstrb ) 信号的影响。” "The AXI4-Lite write access register is updated by the 32-bit AXI Write Data (* _wdata ) s…...

【EPLAN】P8 2.9 使用不了ePLUSE

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决 EPLAN P8 2.9 使用不了ePLUSE问题 2、 问题场景 客户反应 EPLAN P8 2.9 版本打开后使用不了 ePLUSE 功能&#xff0c;如图 1 所示 EPLAN ePLUSE 界面为空白状态&#xff0c;无法使用。 图 1 3、软硬件环境 …...

页面设计任务 个人简介页面

目录 任务要求 任务讲解 源码: 详细讲解 html部分 CSS部分 任务要求 页面结构: 创建一个基本的 HTML 页面&#xff0c;页面标题为“我的个人简介”。页面内容分为以下四个部分&#xff1a; 顶部导航栏: 包含至少三个导航链接&#xff0c;例如&#xff1a;“主页”、“关于…...

机械学习—零基础学习日志(如何理解概率论3)

随机变量的函数分布 一维随机变量分布&#xff0c;可以看到下图&#xff0c;X为不同情况的概率。而x如果是大于等于X&#xff0c;那么当x在40以内时&#xff0c;没有概率&#xff0c;为0。 当x变大&#xff0c;在40-80之间&#xff0c;那么x大于X的概率为&#xff0c;0.7&…...

YOLOv8添加SE注意力机制有效提升检测精度(已跑通)

SE注意力机制概念 SSqueeze-and-Excitation (SE) 注意力机制是一种专注于增强网络模型对不同特征通道的重要性理解的机制。它通过对通道维度上的特征进行动态调整&#xff0c;增强了网络对重要特征的敏感性。 源码 import numpy as np import torch from torch import nn fro…...

【正点原子K210连载】第三十二章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第三十二章 音频FFT实验 本章将介绍CanMV下FFT的应用&#xff0c;通过将时域采集到的音频数据通过FFT为频域。通过本章的学习&#xff0c;读者将学习到CanMV下控制FFT加速器进行FFT的使用。 本章分为如下几个小节&#xff1a; 32.1 maix.FFT模块介绍 32.2 硬件设计 32.3 程序设…...

Android Studio修改默认.m2与Gradle user home缓存位置

Android Studio修改默认.m2与Gradle user home缓存位置 1、修改Gradle user home的方法&#xff1a; android studio配置默认.gradle路径_android studio gradle在哪-CSDN博客文章浏览阅读2k次。当android studio新建一个项目时候&#xff0c;默认的.gradle路径均认为是在c盘的…...

BFS解决单源最短路问题

目录 迷宫中离入口最近的出口 最小基因变化 单词接龙 为高尔夫比赛砍树 迷宫中离入口最近的出口 题目 思路 使用宽度优先遍历解决这道题&#xff0c;需要一个二维数组标记是否被遍历过&#xff0c;也需要一个队列辅助完成宽度优先遍历&#xff0c;类似于水波纹一样&#x…...

织梦移动端网站怎么做/今日国际新闻

首先我们要知道&#xff0c;模板&#xff0c;是什么&#xff1f;模板就是别人做好了的工程文件&#xff0c;所以东西都已经完成&#xff0c;不需要任何效果方面的修改了。那么ae模板怎么套用&#xff1f;就是你用的时候&#xff0c;替换、修改或者删去某些东西&#xff0c;变成…...

品牌建设表态发言/现在学seo课程多少钱

1、查看自己是否安装了MySQL数据库 [rootlocalhost /]# rpm -qa | grep mysql 2、卸载过程 卸载有两种方式&#xff0c;一种是普通删除&#xff0c;另一种是强力删除&#xff0c;当MySQL数据库有其它的依赖文件时&#xff0c;也进行删除。 分别是&#xff1a;rpm -e mysql …...

非遗网页设计作品欣赏/重庆网站seo公司

在IIS中可以通过IP地址域名设置来控制拒绝或允许特定范围内的IP对网站的访问权限&#xff0c;下面简单介绍如何在IIS7.5中设置&#xff0c;如下图&#xff0c;是IIS7.5的主界面 一、安装“IP地址和域限制”功能 选定一个网站&#xff0c;在右边的功能图中有一项“IP地址和域限制…...

做外贸哪几个网站好/中国互联网数据平台

参考文章&#xff1a; flume kafka sparkstreaming整合后集群报错org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/ut https://blog.csdn.net/u010936936/article/details/77247075?locationNum2&fps1 最近在使用CDH 环境 提交 Kafka-Spark Streaming…...

怎么做网站旺铺装修/微博搜索引擎优化

一、WXML节点布局相交状态(通过微信的API实现懒加载) 节点布局相交状态 API 可用于监听两个或多个组件节点在布局位置上的相交状态。这一组API常常可以用于推断某些节点是否可以被用户看见、有多大比例可以被用户看见。 节点布局相交状态 API中有一个 wx.createIntersectionO…...

建一个电商网站多少钱/廊坊网站推广公司

kafkastormhbase整合:kafka作为分布式消息系统&#xff0c;实时消息系统&#xff0c;有生产者和消费者&#xff1b;storm作为大数据的实时处理系统&#xff1b;hbase是apache hadoop 的数据库&#xff0c;其具有高效的读写性能&#xff01; 这里把kafka生产的数据作为storm的源…...