文章目录

      • 一、集群架构:Leader-Follower 模式
      • 二、核心机制:ZAB 协议
      • 三、Leader 选举机制
      • 四、集群部署要点
      • 五、优势与挑战

Zookeeper 集群是一个由多个 Zookeeper 服务实例组成的分布式协调服务系统, 通过奇数个节点(通常 3、5、7 个)的协作,提供高可用性、容错性和数据一致性,适用于分布式环境下的配置管理、命名服务、分布式锁等场景。以下从架构、核心机制、选举机制、数据模型、应用场景及部署要点六个方面展开介绍:

一、集群架构:Leader-Follower 模式

  • 角色分工
    • Leader:唯一处理所有写请求的节点,通过 ZAB 协议(Zookeeper Atomic Broadcast)将数据变更同步至 Follower 节点,确保全局数据一致性。
    • Follower:处理客户端读请求,参与 Leader 选举,并在选举中投票。当 Leader 故障时,Follower 通过投票选出新 Leader。
    • Observer(可选):扩展读取负载,不参与投票,适合高并发读场景。
  • 节点数量:通常为奇数(如 3、5、7),以保证在部分节点故障时仍能通过多数派(quorum)机制维持服务可用性。

tips:后续详细介绍Follower和Observer的区别和关系

二、核心机制:ZAB 协议

  • 原子广播:确保所有写操作按顺序执行,要么全部成功,要么全部失败。
  • 崩溃恢复:当 Leader 故障时,通过选举产生新 Leader,并同步最新数据至所有节点,保证最终一致性。
  • 数据一致性:每个节点保存相同数据副本,客户端无论连接哪个节点,读取的数据均一致。

三、Leader 选举机制

  • 选举触发条件
    • 集群初始化启动。
    • Leader 节点崩溃或与集群失去连接。
  • 选举规则
    1. EPOCH 优先:每个 Leader 任期的代号,EPOCH 大的节点直接胜出。
    2. 事务 ID(ZXID)次之:EPOCH 相同时,ZXID 大的节点胜出(ZXID 标识服务器状态变更,数值越大表示数据越新)。
    3. 服务器 ID(SID)兜底:ZXID 相同时,SID 大的节点胜出(SID 为节点唯一标识,如 server.1server.2)。
  • 选举过程示例
    • 假设集群有 5 个节点(SID 1-5),初始时 SID 3 为 Leader。
    • 若 SID 3 和 5 故障,剩余节点启动选举,SID 4 发起投票但因票数不足(需半数以上,即 3 票)无法当选。
    • 最终,SID 3 恢复或新节点加入后,通过 ZXID 或 SID 比较选出新 Leader。

四、集群部署要点

  1. 环境准备
    • 至少 3 台服务器,确保低延迟、高带宽网络连接。
    • 安装 JDK 8+,关闭防火墙或开放 2181(客户端端口)、2888(Follower 与 Leader 通信)、3888(选举端口)。
  2. 配置文件(zoo.cfg)
    tickTime=2000          # 心跳间隔(毫秒)
    initLimit=10           # Follower 初始连接 Leader 的超时时间(tickTime 倍数)
    syncLimit=5            # Follower 同步 Leader 数据的超时时间
    dataDir=/data/zookeeper # 数据快照目录
    clientPort=2181        # 客户端连接端口
    server.1=192.168.1.1:2888:3888  # 节点 1 配置
    server.2=192.168.1.2:2888:3888  # 节点 2 配置
    server.3=192.168.1.3:2888:3888  # 节点 3 配置
    
  3. 节点标识(myid)
    • dataDir 目录下创建 myid 文件,内容为节点编号(如 123),与 zoo.cfg 中的 server.X 对应。
  4. 启动与验证
    • 依次启动各节点:./zkServer.sh start
    • 检查状态:./zkServer.sh status,正常应显示 1 个 Leader 和多个 Follower。
    • 使用客户端测试:./zkCli.sh -server 192.168.1.1:2181,执行 ls / 查看根节点。

五、优势与挑战

  • 优势
    • 强一致性:通过 ZAB 协议保证数据最终一致。
    • 高可用性:奇数节点设计容忍部分节点故障。
    • 轻量级:适合高并发读场景(如配置中心)。
  • 挑战
    • 写性能瓶颈:写操作需同步至多数节点,密集写入时可能成为瓶颈。
    • 运维复杂:需监控网络分区、脑裂等问题。
    • 依赖网络:节点间通信延迟影响性能。

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

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

相关文章

道可云人工智能每日资讯|浦东启动人工智能创新应用竞赛

道可云人工智能&元宇宙每日简报(2025年7月1日)讯,今日人工智能&元宇宙新鲜事有: 江城模境工信部人工智能大模型公共服务平台(武汉)上线运行 2025年6月27日,光谷人工智能创新大会在湖北…

Python元组的遍历

一、前言 在 Python 中,元组(tuple) 是一种非常基础且常用的数据结构,它与列表类似,都是有序的序列,但不同的是,元组是不可变的(immutable),一旦创建就不能修…

矩阵的条件数(Condition Number of a Matrix)

文章目录 矩阵的条件数(Condition Number of a Matrix)📌 定义🧮 常见形式:2-范数下的条件数🔍 条件数的意义🧠 实际意义举例💻 Python 示例(NumPy)&#x1f…

1 Studying《Computer Architecture A Quantitative Approach》1-4

目录 Preface 1 Fundamentals of Quantitative Design and Analysis 1.1 Introduction 1.2 Classes of Computers 1.3 Defining Computer Architecture 1.4 Trends in Technology 1.5 Trends in Power and Energy in Integrated Circuits 1.6 Trends in Cost 1.7 Depe…

Reactor Hot Versus Cold

这段文字详细解释了 Reactor 中 热发布者(Hot Publisher) 和 冷发布者(Cold Publisher) 的区别,并通过示例展示了它们的行为差异。以下是对其含义的总结和解释: 1. 冷发布者(Cold Publisher&…

OpenCV CUDA模块设备层-----逐通道最小值比较函数min()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 OpenCV 的CUDA并行计算模块(cv::cudev)中的一个设备端内联函数,用于在CUDA核函数中对两个uchar2类型像素值进…

proteus实现stm32按键控制LED灯流水灯方向

一、新建工程 1、工程命名 2、选择工程存储位置 3、默认下一步 4、默认下一步 5、选择没有固件项目,下一步 二、器件放置并连线 1、点击左边工具栏中运放的形状的符号 2、再点击‘P’,搜索器件 3、搜索器件并放置连线 按键控制LED需要的器件有&#…

华为云Flexus+DeepSeek征文 | 让运维更智能:Chaterm AI终端工具与华为云ModelArts Studio深度集成指南

华为云FlexusDeepSeek征文 | 让运维更智能:Chaterm AI终端工具与华为云ModelArts Studio深度集成指南 引言一、ModelArts Studio平台介绍华为云ModelArts Studio简介ModelArts Studio主要特点 二、Chaterm介绍Chaterm简介Chaterm主要特点 三、安装Chaterm工具下载C…

湖北理元理律师事务所债务解法:从法律技术到生活重建

数据透视: 2023年武汉法院受理债务纠纷案11.4万件,其中37%因不当还款规划导致债务雪球效应。 一、债务危机的法律归因 通过分析1200例债务咨询案例,发现三大共性法律认知盲区: 担保责任误判 某企业主为朋友担保200万&#xff0…

小程序学习笔记:加载效果、上拉加载与节流处理

在微信小程序开发过程中,优化用户体验是非常重要的一环。今天我们就来分享如何在小程序中实现加载提示效果、上拉触底加载下一页数据以及对上拉触底事件进行节流处理,让你的小程序更加流畅和高效。 一、添加 loading 提示效果 在小程序中,当…

计算机网络:【socket】【UDP】【地址转换函数】【TCP】

一.socket 1.1socket接口 它返回的是一个文件描述符。创建socket文件描述符(TCP/UDP,客户端服务器) • socket()打开一个网络通讯端口,如果成功的话,就像 open()一样返回一个文件描 述符; • 应用程序可以像读写文件一样用 read/write 在网络上收发数据; • 如果 socket()调用…

机器人轨迹跟踪控制与动力学模型详解

1. 机器人控制的本质:通过关节扭矩执行轨迹 机器人控制的核心目标是让机器人关节精确跟踪期望轨迹 ( q d , q ˙ d , q d ) (q_d, \dot{q}_d, \ddot{q}_d) (qd​,q˙​d​,q​d​)。为此,控制器需根据当前状态 ( q , q ˙ ) (q, \dot{q}) (q,q˙​)计…

智能办公与科研革命:ChatGPT+DeepSeek大模型在论文撰写、数据分析与AI建模中的实践指南

随着人工智能技术的快速发展,大语言模型如ChatGPT和DeepSeek在科研领域的应用正在为科研人员提供强大的支持。这些模型通过深度学习和大规模语料库训练,能够帮助科研人员高效地筛选文献、生成论文内容、进行数据分析和优化机器学习模型。 ChatGPT和Deep…

运营商场景下的实时脱敏方案:PB 级日志流的分布式处理架构

在数字化浪潮中,运营商积累了海量数据,涵盖用户信息、通信记录、业务运营数据等。这些数据不仅是运营商业务运营的关键资产,也是创新服务、精准营销的核心驱动力。然而,随着数据量呈指数级增长,运营商每日需处理 PB 级…

docker+n8n的工作流中无法使用本地ollama服务的问题

使用docker创建n8n服务后,工作流中不想用大模型付费API测试,想用本地大模型来跑,刚好电脑上装了ollama,就试了下添加ollama节点来替代大模型付费API,结果就遇到了以下问题 ollama正常运行中 但是工作流会卡在这&…

通过交互式可视化探索波动方程-AI云计算数值分析和代码验证

波动方程是一个基本的数学模型,它描述了各种类型的波(包括机械波、声波、电磁波和流体波)如何通过不同的介质传播,这使得它对于物理学、工程学和其他科学学科中声学、光学、医学成像和电信等领域的预测和设计都至关重要。 波动方程…

10授权

目录 本节大纲 一、权限管理 1. 认证 2. 授权 二、授权核心概念 三、权限管理策略 1. 基于 URL 权限管理 权限表达式 2. 基于 方法 权限管理 EnableGlobalMethodSecurity 四、基本用法 五、原理分析 六、实战 1. 简介 2. 库表设计 3. 创建 springboot 应用 本节…

线性规划模型

线性规划算是数学建模中最基础的模型了,其典型特征就是线性和有限资源,即在一组线性约束条件下,求解一个线性目标函数的最大值或最小值问题: 其中x 是决策变量向量,c 是目标函数系数向量,a 和 b 分别是约束…

华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建知识库大模型工作流查询数据库数据

华为云FlexusDeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建知识库大模型工作流查询数据库数据 什么是华为云ModelArts 华为云ModelArts ModelArts是华为云提供的全流程AI开发平台,覆盖从数据准备到模型部署的全生命周期管理&am…

WPF中Style和Template异同

在WPF(Windows Presentation Foundation)中,Style和Template是两个核心概念,用于控制UI元素的外观和行为,但它们的职责和使用场景有明显区别。以下是详细分析: 一、基本概念 1. Style(样式&am…