Zookeeper服务

一、什么是Zookeeper

        Zookeeper 是一个分布式应用程序的协调服务,它提供了一个高性能的分布式配置管理、分布式锁服务和分布式协调服务。它是 Apache 软件基金会的一个项目,被设计用来处理大规模的分布式系统中的一些关键问题。

Zookeeper的组成员关系:

二、Zookeeper重要特性和功能

  1. 分布式配置管理:Zookeeper 允许开发人员存储和管理应用程序的配置信息,这些配置信息可以在分布式环境中共享和同步。

  2. 命名服务:Zookeeper 提供了一个层次化的命名空间,开发人员可以利用这个命名空间来注册、查找和管理分布式系统中的各种资源。

  3. 分布式锁:Zookeeper 提供了分布式锁服务,允许开发人员在分布式系统中实现诸如互斥访问共享资源等同步机制。

  4. 分布式队列:Zookeeper 提供了一些原语,使得开发人员可以基于 Zookeeper 实现分布式队列,用于协调和通信。

  5. 集群管理:Zookeeper 本身就是一个高可用、高可靠的分布式系统,可以用于监控和管理集群中的节点状态和健康状况。

  6. Watch 机制:Zookeeper 提供了 Watch 机制,允许客户端在节点状态发生变化时得到通知,从而可以实现事件驱动的编程模型。

  7. 原子性操作:Zookeeper 提供了一些原语,如创建、删除节点等操作都是原子性的,保证了分布式系统的一致性。

  8. 高性能:Zookeeper 的设计目标之一是提供高性能的服务,它采用了一些优化手段,如内存中数据的存储和快速的数据同步算法,以提供低延迟和高吞吐量。

三、Zookeeper运行机制

  1. 集群模式:ZooKeeper 以集群的形式运行。一个 ZooKeeper 集群通常由多个服务器节点组成,这些节点分布在不同的机器上,它们通过网络进行通信和协作。

  2. Leader-Follower 架构:ZooKeeper 集群中的服务器节点采用 Leader-Follower 架构。在集群启动时,会选举出一个节点作为 Leader,其他节点则成为 Followers。Leader 负责处理客户端的写操作,并将更新操作复制给 Followers,而 Followers 则负责处理客户端的读操作。

  3. 数据存储:ZooKeeper 使用内存数据库来存储数据,并将数据持久化到磁盘上的事务日志中,以确保数据的持久性和一致性。数据存储在树状的命名空间中,每个节点称为 ZNode。

  4. 原子性操作:ZooKeeper 提供了一系列原子性的操作,如创建节点、删除节点、读取节点、更新节点等。这些操作要么全部成功,要么全部失败,从而确保了数据的一致性。

  5. Watch 机制:ZooKeeper 提供了 Watch 机制,允许客户端注册 Watcher 来监视节点状态的变化。当节点状态发生变化时,ZooKeeper 会通知客户端,从而实现了事件驱动的编程模型。

  6. 客户端与服务器交互:客户端与 ZooKeeper 服务器之间通过 TCP 连接进行通信。客户端可以向任意一个 ZooKeeper 服务器发送请求,该服务器将请求转发给 Leader,Leader 处理请求后将结果返回给客户端。

  7. 快速的数据同步算法:ZooKeeper 使用了一种快速的数据同步算法,使得数据在集群中的复制和同步非常迅速,从而保证了系统的高性能和可用性。

四、Zookeeper操作细节

4.1、Zookeeper服务的操作

  1. 连接到 ZooKeeper 服务:在使用 ZooKeeper 之前,首先需要建立与 ZooKeeper 服务的连接。这可以通过 ZooKeeper 客户端库提供的连接函数来实现。连接函数通常包括 ZooKeeper 服务器的主机名和端口号等参数。

  2. 创建节点:可以使用 ZooKeeper 提供的 create() 函数来创建一个新的节点(ZNode)。在创建节点时,可以指定节点的路径、数据和节点类型等参数。

  3. 读取节点:可以使用 ZooKeeper 提供的 getData() 函数来读取指定节点的数据。通过这个函数可以获取节点的数据内容以及节点的元数据信息。

  4. 更新节点:可以使用 ZooKeeper 提供的 setData() 函数来更新指定节点的数据。通过这个函数可以修改节点的数据内容,同时还可以指定版本号来实现乐观并发控制。

  5. 删除节点:可以使用 ZooKeeper 提供的 delete() 函数来删除指定节点。删除节点时,可以选择是否递归删除其所有子节点。

  6. 检查节点是否存在:可以使用 ZooKeeper 提供的 exists() 函数来检查指定节点是否存在。通过这个函数可以判断节点是否存在以及节点的元数据信息。

  7. 获取子节点列表:可以使用 ZooKeeper 提供的 getChildren() 函数来获取指定节点的子节点列表。通过这个函数可以遍历和查看节点的子节点。

  8. 监听节点变化:可以使用 ZooKeeper 提供的 Watch 机制来监听指定节点的状态变化。通过注册 Watcher,客户端可以在节点状态发生变化时得到通知。

  9. 释放连接:在使用完 ZooKeeper 服务后,需要调用 ZooKeeper 客户端库提供的关闭函数来释放与 ZooKeeper 服务的连接。

4.2、Zookeeper服务一致性

        ZooKeeper 通过实现强一致性来保证数据的一致性。这意味着在任何给定时间点,所有连接到 ZooKeeper 的客户端都会看到相同的数据视图。以下是 ZooKeeper 服务一致性的几个关键点:

  1. 原子性操作:ZooKeeper 提供了一系列原子性的操作,如创建节点、删除节点、更新节点等。这些操作要么全部成功,要么全部失败,从而确保了数据更新的原子性。

  2. 顺序一致性:ZooKeeper 提供了顺序一致性的保证,即对于每个更新操作,都可以按照相同的顺序被所有客户端观察到。这意味着在 ZooKeeper 中,操作的执行顺序是确定的,不会出现数据的乱序问题。简要来说就是:来自任意特定客户端的更新都会按其发送顺序被提交。也就是说,如果一个客户端将znodez的值更新为a,在之后的操作中,它又将z的值更新为b,则没有客
    户端能够在看到z的值是b之后再看到值a(如果没有其他对z的更新)。

  3. 单一系统映像:一个客户端无论连接到哪一台服务器,它看到的都是同样的系统视图。这意味着,如果一个客户端在同一个会话中连接到一台新的服务器,它所看到的系统状态不会比在之前服务器上所看到的更老。当一台服务器出现故障,导致它的一个客户端需要尝试连接集合体中其他的服务器时,所有状态滞后于故障服务器的服务器都不会接受该连接请求,除非这些服务器将状态更新至故障服务器的水平。

  4. 持久性:ZooKeeper 使用事务日志来持久化数据更新操作。所有的写操作都会先写入事务日志,然后再应用到内存数据库中。通过这种方式,即使节点故障或重启,数据也不会丢失。

  5. 多数派原则:ZooKeeper 集群中的写操作必须得到大多数节点的确认才算成功。这种多数派原则保证了数据的一致性和可靠性,即使集群中的部分节点出现故障,仍然能够保证数据的一致性。

  6. 及时性:任何客户端所看到的滞后系统视图都是有限的,不会超过几十秒。这意味着与其允许一个客户端看到非常陈旧的数据,还不如将服务器关闭,强迫该客户端连接到一个状态较新的服务器。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文辅助笔记:Tempo 之 model.py

0 导入库 import math from dataclasses import dataclass, asdictimport torch import torch.nn as nnfrom src.modules.transformer import Block from src.modules.prompt import Prompt from src.modules.utils import (FlattenHead,PoolingHead,RevIN, )1TEMPOConfig 1.…

在编程的世界里,我相信每一行代码都是一次对未来的投资

😀前言 突然有感而发也是激励自己互勉 🏠个人主页:尘觉主页 文章目录 在编程的世界里,我相信每一行代码都是一次对未来的投资类似句子编程的本质代码的价值构建可持续的未来结语 在编程的世界里,我相信每一行代码都是一…

【JVM】GC调优(优化JVM参数)、性能调优

GC调优 GC调优的主要目标是避免由垃圾回收引起程序性能下降。 GC调优的核心指标 垃圾回收吞吐量:执行用户代码时间/(执行用户代码时间 GC时间)延迟:GC延迟 业务执行时间内存使用量 GC调优步骤 发现问题:通过监控…

Servlet详解(从xml到注解)

文章目录 概述介绍作用 快速入门Servelt的执行原理执行流程:执行原理 生命周期概述API 服务器启动,立刻加载Servlet对象(理解)实现Servlet方式(三种)实现Servlet接口实现GenericServlet抽象类,只重写service方法实现HttpServlet实现类实现Htt…

python:用 mido 生成 midi文件,用 pygame 播放 mid文件

pip install mido Downloading mido-1.3.2-py3-none-any.whl (54 kB) Downloading packaging-23.2-py3-none-any.whl (53 kB) Installing collected packages: packaging, mido Successfully installed mido-1.3.2 packaging-23.2 mido 官网文档 pip intall pygame pygame…

【AI】ONNX

长期更新,建议收藏关注! 友情链接 Netron 开放神经网络交换(Open Neural Network Exchange)简称ONNX,是微软和Facebook提出用来表示深度学习模型的开放格式。所谓开放就是ONNX定义了一组和环境,平台均无关的标准格式…

内网安全-代理Socks协议路由不出网后渗透通讯CS-MSF控制上线简单总结

我这里只记录原理,具体操作看文章后半段或者这篇文章内网渗透—代理Socks协议、路由不出网、后渗透通讯、CS-MSF控制上线_内网渗透 代理-CSDN博客 注意这里是解决后渗透通讯问题,之后怎么提权,控制后面再说 背景 只有win7有网,其…

分层图像金字塔变压器

文章来源:hierarchical-image-pyramid-transformers 2024 年 2 月 5 日 本文介绍了分层图像金字塔变换器 (HIPT),这是一种新颖的视觉变换器 (ViT) 架构,设计用于分析计算病理学中的十亿像素全幻灯片图像 (WSI)。 HIPT 利用 WSI 固有的层次结…

Git系列:如何为不同的Git仓库设置不同的配置项?

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

毫米波雷达原理(含代码)(含ARS548 4D毫米波雷达数据demo和可视化视频)

毫米波雷达原理 1. 传统毫米波雷达1.1 雷达工作原理1.2 单目标距离估计1.3 单目标速度估计1.4 单目标角度估计1.5 多目标距离估计1.6 多目标速度估计1.7多目标角度估计1.7 总结 3. FMCW雷达数据处理算法4. 毫米波雷达的目标解析(含python代码)5. ARS548 4D毫米波雷达数据demo(含…

企业定制AI智能名片商城小程序:重塑营销场景,引领数字化营销新纪元

在数字化时代的浪潮中,多企业AI智能名片商城小程序以其独特的魅力和创新的功能,为消费者带来了前所未有的购物体验。它不仅是一个汇聚各类商品的购物平台,更是一个充满活力和创造力的社群生态。通过强化社群互动、鼓励用户生成内容以及引入积…

【RAG 博客】Haystack 中的 DiversityRanker 与 LostInMiddleRanker 用来增强 RAG pipelines

Blog:Enhancing RAG Pipelines in Haystack: Introducing DiversityRanker and LostInTheMiddleRanker ⭐⭐⭐⭐ 文章目录 Haystack 是什么1. DiversityRanker2. LostInTheMiddleRanker使用示例 这篇 blog 介绍了什么是 Haystack,以及如何在 Haystack 框…

加州大学欧文分校英语中级语法专项课程03:Tricky English Grammar 学习笔记

Tricky English Grammar Course Certificate Course Intro 本文是学习 https://www.coursera.org/learn/tricky-english-grammar?specializationintermediate-grammar 这门课的学习笔记 文章目录 Tricky English GrammarWeek 01: Nouns, Articles, and QuantifiersLearning …

WAAP动态安全解决方案

随着企业数字化进程不断加速,应用安全面临多重威胁,新型攻击方式层出不穷,常见的攻击形式包括Web应用攻击、DDoS攻击、API攻击、恶意爬虫攻击等。企业正面临严峻的安全防护挑战,需寻找一个可靠、全面的安全解决方案。在此情况下&a…

基于双层优化的电动汽车优化调度研究(附matlab程序)

基于双层优化的电动汽车优化调度研究 0.代码链接 基于双层优化的电动汽车优化调度研究(matlab程序)资源-CSDN文库 1.简述 关键词:双层优化 选址定容 输配协同 时空优化 参考文档:《考虑大规模电动汽车接入电网的双层优化调度策略_胡文平》…

【 书生·浦语大模型实战营】学习笔记(六):Lagent AgentLego 智能体应用搭建

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、…

Redis 实战之对象

Redis 实战 - 对象 对象的类型与编码类型编码和底层实现 字符串对象编码的转换字符串命令的实现 列表对象编码转换列表命令的实现 哈希对象编码转换哈希命令的实现 集合对象集合命令的实现 有序集合对象编码的转换有序集合命令的实现 类型检查与命令多态类型检查的实现多态命令…

嵌入式全栈开发学习笔记---C语言笔试复习大全7(编程题1~8)

目录 1、200~300之间能被3整除的数,5个一行输出; 2、求两个数的最大公约数、最小公倍数; 3、输入十个数,求出平均值; 4、通过编程实现,统计1~n有多少个9; 5、有1、2、3、4个数字&#xff0…

开源AI智能名片与B2B2C商城系统:打造私域流量的会员体系新篇章

在数字化浪潮的推动下,企业如何高效利用私域流量、构建强大的会员体系成为了市场竞争的关键。AI智能名片与B2B2C商城系统的结合,为企业提供了一个全新的解决方案。通过智能名片的个性化推荐和商城系统的精准营销,企业能够更有效地触达和沟通私…

ApiHug 官方站点

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplacehttps://…