大数据学习(63)- Zookeeper详解

&&大数据学习&&

🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞

🍋一、zookeeper概念


Zookeeper是 Apache Hadoop项目下的一个子项目,是一个树形目录服务。

Zookeeper翻译过来就是动物园管理员,他是用来管Hadoop(大象)、Hive(蜜蜂)、Pig(小猪)的管理员,简称zk

ZooKeeper 是一个分布式的、开源的协调服务,主要用于解决分布式系统中的一致性问题。它提供了一个简单而强大的接口,帮助开发者在分布式环境中实现诸如配置管理、命名服务、分布式锁、集群管理等功能。

🍋二、ZooKeeper 的架构

ZooKeeper 采用 主从架构,包含以下角色:

  1. Leader

    负责处理写请求和事务操作。通过选举机制产生。(ZooKeeper 的选举机制主要用于其集群管理,特别是在集群启动或领导者节点故障时,用于选出一个新的领导者节点。这个领导者节点将负责处理客户端的请求、维护集群状态以及与其他节点进行通信。)
  2. Follower

    处理读请求,并将写请求转发给 Leader。参与 Leader 选举。
  3. Observer(可选)

    与 Follower 类似,但不参与选举,用于扩展读性能。
  4. Client

    与 ZooKeeper 集群交互的客户端。

🍋三、zookeeper提供的主要功能

1、配置管理


在多个应用程序(或服务器)中,假如存在一些相同的配置信息,在对该配置信息进行修改时,我们需要一个一个进行修改,这样会大大增加维护的成本,不方便管理。这时如果使用一个专门放配置中心的组件,将相同的配置信息放在配置中心,需要的时候直接拉取,这样可以大大节约维护的成本, 而zookeeper即可实现配置中心的功能。

2.分布式锁


        在多个用户访问同一台主机上的应用程序数据时,我们可以通过加锁解决并发操作的问题,但是如果有多台主机相同的应用程序要访问同一数据时,这个时候我们在一台主机上加锁是不能解决另一台主机的并发问题的,换句话说自己的锁只对自己有效并不影响别的 ,这个时候就需要分布式锁解决这类问题,我个人理解分布式锁像是从所有主机中抽取出来的一把锁,或者是有一把总锁对所有主机都有效。zookeeper可以实现分布式锁的功能。

        分布式锁允许在多个服务实例之间协调对共享资源的访问。在分布式环境中,传统的单机锁机制(如线程锁)无法跨进程或跨服务器工作,因此需要使用分布式锁来确保在同一时间只有一个服务实例能够访问或修改共享资源,从而避免数据竞争和数据不一致的问题。

3.分布式应用协调

        分布式事务:ZooKeeper 可以用于实现分布式事务的协调,确保多个分布式节点能够协同工作,完成复杂的事务操作。

        分布式选举:ZooKeeper 可以用于实现分布式系统中的领导者选举,确保在集群中只有一个节点担任领导者角色。

选举过程大致如下

  1. 集群启动或领导者故障:当 ZooKeeper 集群启动时,或者当前的领导者节点因为某种原因(如崩溃或网络分区)无法继续工作时,集群会进入选举状态。

  2. 服务器状态转换:集群中的每个服务器都会将自己的状态转换为 LOOKING,表示正在寻找领导者。

  3. 投票过程

    • 每个服务器都会为自己投一票,并将自己的投票信息(包括服务器ID和ZXID,ZXID是ZooKeeper的事务ID,用于标识服务器的版本和状态)发送给集群中的其他服务器。
    • 服务器会收集来自其他服务器的投票,并根据一定的规则(如ZXID的大小和服务器ID的大小)来决定是否接受其他服务器的投票。
    • 如果一个服务器发现自己的投票能够赢得多数(即超过半数的服务器投票给自己),它就会成为领导者。
  4. 领导者确认:一旦选举出领导者,领导者会向集群中的其他服务器发送通知,确认自己的领导地位。其他服务器在收到领导者的通知后,会将自己的状态转换为 FOLLOWING 或 OBSERVER(对于观察者节点),并开始跟随领导者工作。

  5. 故障恢复:如果领导者节点在工作过程中出现故障,集群会重新进入选举状态,选举出一个新的领导者。

4. 组服务

组成员管理:ZooKeeper 可以管理分布式系统中的组成员信息,如节点的加入、离开和更新。

负载均衡:通过组成员管理,ZooKeeper 可以帮助实现分布式系统中的负载均衡和故障恢复。

🍋四、使用场景

1. 分布式数据库

元数据信息管理

  • 定义:在分布式数据库中,元数据是指描述数据库结构、配置、权限等信息的数据。
  • ZooKeeper 作用:ZooKeeper 可以用于集中存储和管理分布式数据库的元数据。例如,数据库管理员可以在 ZooKeeper 中创建节点来存储数据库表的结构信息、索引信息、权限设置等。
  • 优势:通过 ZooKeeper,数据库管理员可以方便地查看和修改元数据,同时 ZooKeeper 的数据一致性保证确保所有节点都能获取到最新的元数据信息。

节点状态信息管理

  • 定义:节点状态信息指的是分布式数据库中各个节点的运行状态、负载情况等信息。
  • ZooKeeper 作用:ZooKeeper 可以跟踪分布式数据库集群中的节点信息,监控节点的状态(如上线、下线、故障等)。例如,每个数据库节点在启动时可以向 ZooKeeper 注册自己的信息,并在故障时通知 ZooKeeper。
  • 优势:数据库管理员可以通过 ZooKeeper 实时了解集群中各个节点的状态,从而进行更好的资源管理和故障恢复。

2. 分布式消息队列

元数据管理

  • 定义:在分布式消息队列中,元数据包括队列的配置信息、消费者的消费位点等。
  • ZooKeeper 作用:ZooKeeper 可以存储和管理消息队列的元数据。例如,消息队列系统可以在 ZooKeeper 中创建节点来存储队列的名称、消费者的消费位点等信息。
  • 优势:通过 ZooKeeper,消息队列系统可以实现元数据的集中管理和动态更新,方便管理员进行配置和监控。

消费者协调

  • 定义:在分布式消息队列中,消费者协调指的是多个消费者如何共同消费消息,避免消息重复消费或消息丢失。
  • ZooKeeper 作用:ZooKeeper 可以用于实现消费者协调。例如,通过 ZooKeeper 的分布式锁机制,可以确保同一时间只有一个消费者能够处理某个消息,从而避免消息重复消费。同时,ZooKeeper 还可以用于实现消费者的负载均衡,将消息均匀分配给不同的消费者。
  • 优势:通过 ZooKeeper,消息队列系统可以实现高效、可靠的消费者协调,提高消息处理的效率和稳定性。

3. 服务发现和注册

服务注册

  • 定义:服务注册是指将服务实例的信息(如服务名称、地址、端口等)注册到注册中心,以便其他服务能够发现和调用。
  • ZooKeeper 作用:ZooKeeper 可以作为服务注册中心,允许服务提供者将自己的服务信息注册到 ZooKeeper 中。例如,服务提供者可以在 ZooKeeper 中创建一个节点来存储自己的服务信息。
  • 优势:通过 ZooKeeper,服务提供者可以方便地将自己的服务注册到注册中心,实现服务的动态发布和更新。

服务发现

  • 定义:服务发现是指服务消费者从注册中心获取可用的服务实例信息,以便进行服务调用。
  • ZooKeeper 作用:ZooKeeper 可以帮助服务消费者从注册中心获取可用的服务实例信息。例如,服务消费者可以监听 ZooKeeper 中与服务名称相关的节点,当有新的服务实例注册或已有的服务实例下线时,ZooKeeper 会通知服务消费者。
  • 优势:通过 ZooKeeper,服务消费者可以实时获取可用的服务实例信息,实现服务的动态发现和调用。

4. 分布式缓存

数据一致性协调

  • 定义:在分布式缓存中,数据一致性指的是多个缓存节点之间的数据保持一致。
  • ZooKeeper 作用:ZooKeeper 可以用于协调分布式缓存的一致性。例如,当某个缓存节点更新数据时,可以在 ZooKeeper 中创建一个节点来存储更新后的数据版本信息。其他缓存节点可以监听这个节点,当数据版本发生变化时,及时更新自己的缓存数据。
  • 优势:通过 ZooKeeper,分布式缓存系统可以实现高效、可靠的数据一致性协调,确保多个缓存节点之间的数据保持一致。

节点状态监控

  • 定义:节点状态监控是指对分布式缓存中的各个节点进行状态监控,以便及时发现和处理故障节点。
  • ZooKeeper 作用:ZooKeeper 可以跟踪分布式缓存集群中的节点信息,监控节点的状态(如上线、下线、故障等)。例如,每个缓存节点在启动时可以向 ZooKeeper 注册自己的信息,并在故障时通知 ZooKeeper。
  • 优势:通过 ZooKeeper,分布式缓存系统可以实时了解集群中各个节点的状态,从而进行更好的资源管理和故障恢复。

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

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

相关文章

【蓝桥杯python研究生组备赛】003 贪心

题目1 股票买卖 给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易&…

mmdet3d.models.utils的clip_sigmoid理解

Sigmoid 函数 标准的 sigmoid 函数定义为: 容易得出结论: 取值范围(0, 1) clip_sigmoid 是在标准的 sigmoid 函数基础上进行 裁剪(clip),即对 sigmoid 输出的结果加以限制,避免其超出特定范围。 import …

侯捷 C++ 课程学习笔记:进阶语法之lambda表达式(二)

侯捷 C 课程学习笔记:进阶语法之lambda表达式(二) 一、捕获范围界定 1. 局部变量与函数参数 ​非静态局部变量:Lambda 所在作用域内定义的局部变量(如函数内部的 int x)会被完整复制其当前值。捕获后外部变…

有必要使用 Oracle 向量数据库吗?

向量数据库最主要的特点是让传统的只能基于具体值/关键字的数据检索,进化到了可以直接基于语义的数据检索。这在AI时代至关重要! 回到标题问题:是否有必要使用 Oracle 向量数据库? 这实际还要取决于你的具体应用需求。 客观来讲…

论文解读 | AAAI'25 CoRA:基于大型语言模型权重的协作信息感知用于推荐

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 个人信息 作者:刘禹廷,东北大学博士生 内容简介 将协作信息融入大型语言模型(LLMs)是一种有前景的适应推荐任务的技…

es扩容节点以后写入数据量增加1倍

背景: es扩容一倍的数据节点以后 写入数据量增加1倍 业务反馈业务访问量没增加。 最后定位是监控数据: PUT _cluster/settings {"persistent": {"xpack.monitoring.collection.enabled" : "false"} }这个索引记录的是 节…

G-Star 公益行 | 温暖相约 3.30 上海「开源×AI 赋能公益」Meetup

你是否曾想过,在这个数字化浪潮席卷的时代,公益组织如何突破技术瓶颈?当 AI 成为热门话题,它能为公益事业带来怎样的温度?开源的力量,如何让每一份善意都拥有无限可能? G-Star 公益行&#xff…

MySQL数据库复杂的增删改查操作

在前面的文章中,我们主要学习了数据库的基础知识以及基本的增删改查的操作。接下去将以一个比较实际的公司数据库为例子,进行讲解一些较为复杂且现时需求的例子。 基础知识: 一文清晰梳理Mysql 数据库基础知识_字段变动如何梳理清楚-CSDN博…

kafka-docker版

Kafka-docker版 1 概述 1.1 定义 Kafka传统定义: Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQucue),主要应用于大数据实时处理领域。它是一个开源的分布式事件流平台( Event Streaming Platform),被数千家公司用于高性能数据…

Zabbix 7.2 + Grafana 中文全自动安装ISO镜像

简介 ​ 基于Zabbix 官方的Alma Linux 8 作为基础镜像。 镜像源都改为国内大学镜像站,自动联网安装ZabbixGrafana。 安装中文字体、Zabbix和Grafana也配置默认中文。 Zabbix 也指定中文字体,绘图无乱码。 配置时区为东八区,Zabbix配置We…

使用pip在Windows机器上安装Open Webui,配合Ollama调用本地大模型

之前的文章分享过在 linux 服务器上安装,并使用Open-webui 来实现从页面上访问本地大模型的访问。也写了文章分享了我在家里 Windows Server 台式机上安装 Ollama 部署本地大模型,并分别使用 Chatbox 和 CherryStudio 来访问本地的大模型。今天我来分享一…

【python运行Janus-Pro-1B文生图功能】

前言 体验了一把本地部署Janus-Pro-1B实现文生图功能。 1、开源项目下载 官方开源项目代码直接从Github上下载。 2、模型下载 模型官方下载需要魔法 Janus-Pro-1B模型文件:Janus-Pro-1B模型文件 百度网盘: https://pan.baidu.com/s/16t4H4z-QZe2UDAg4…

18 | 实现简洁架构的 Handler 层

提示: 所有体系课见专栏:Go 项目开发极速入门实战课;欢迎加入 云原生 AI 实战 星球,12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力(聚焦于 Go、云原生、AI Infra);本节课最终…

宇树ROS1开源模型在ROS2中Gazebo中仿真

以GO1为例 1. CMakelists.txt更新语法 cmake_minimum_required(VERSION 3.8) project(go1_description) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")add_compile_options(-Wall -Wextra -Wpedantic) endif() # find dependencies find…

LearnOpenGL-笔记-其三

在之前的章节中我们学习了基本的窗口构建方法、着色器的定义与使用以及摄像机的构建,而从今天这个大章节开始我们要来学习光照有关的知识。 颜色 现实世界中有无数种颜色,每一个物体都有它们自己的颜色。我们需要使用(有限的)数…

cfi网络安全 网络安全hcip

目录 RIP (路由信息协议) 算法 开销 版本 开销值的计算方式 RIPV1和RIPV2的区别 RIP的数据包 Request(请求)包 Reponse(应答)包 RIP的特征 周期更新 RIP的计时器 1,周期更新计时器 2,失效计时器 3,垃圾回收计时器 RIP的核心思…

RabbitMQ从入门到实战-2

文章目录 Java客户端快速入门WorkQueue(多消费)能者多劳配置 交换机fanout交换机案例 Direct交换机Topic交互机 声明队列和交互机(IDEA中)基于Bean声明队列和交换机基于注解声明(推) 消息转换器配置Json消息转换器 业务改造&#…

《苍穹外卖》SpringBoot后端开发项目核心知识点与常见问题整理(DAY1 to DAY3)

目录 一、在本地部署并启动Nginx服务1. 解压Nginx压缩包2. 启动Nginx服务3. 验证Nginx是否启动成功: 二、导入接口文档1. 黑马程序员提供的YApi平台2. YApi Pro平台3. 推荐工具:Apifox 三、Swagger1. 常用注解1.1 Api与ApiModel1.2 ApiModelProperty与Ap…

可编辑PPT解析数字化转型是什么意思,传统企业的数字化、数字转型数字化变革之路

《传统企业数字化转型之路》是一份43页的PPT,主要探讨了传统企业在数字化转型过程中面临的挑战和解决方案。文档从竞品分析、竞标分析、整体环境、客户需求、品牌效应、市场份额、技术架构和部门效率等方面进行了详细讨论,指出如果企业在这些方面都存在问…

Pytorch系列教程:可视化Pytorch模型训练过程

深度学习和理解训练过程中的学习和进步机制对于优化性能、诊断欠拟合或过拟合等问题至关重要。将训练过程可视化的过程为学习的动态提供了有价值的见解,使我们能够做出合理的决策。训练进度必须可视化的两种方法是:使用Matplotlib和Tensor Board。在本文…