大数据-26 ZooKeeper 分布式和谐框架 简介与设置 Leader Follower Observer

[复制链接]
发表于 2026-2-22 03:52:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
点一下关注吧!!!非常感谢!!连续更新!!!

🚀 AI篇连续更新中!(长期更新)

如今2025年06月16日更新到:
AI炼丹日记-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私有摆设 测试上手 架构研究,连续打造实用AI工具指南!📐🤖
💻 Java篇正式开启!(300篇)

如今2025年06月28日更新到:
Java-58 深入浅出 分布式服务 ACID 三阶段提交3PC 对比2PC
MyBatis 已完结,Spring 已完结,Nginx已完结,Tomcat已完结,分布式服务正在更新!深入浅出助你打牢底子!
📊 大数据板块已完成多项干货更新(300篇):

包罗 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项焦点组件,覆盖离线+实时数仓全栈!
如今2025年06月13日更新到:
大数据-278 Spark MLib - 底子先容 呆板学习算法 梯度提拔树 GBDT案例 详解

章节内容

上节我们顺遂完成了:

  • Sqoop CDC ChangeDataCapture 差量数据捕获
  • CDC的几种范例 侵入式和非侵入式
  • Sqoop 数据差量更新导入 从 MySQL 到 Hive
Sqoop如今就算告一段落了,接下来我们将开始 ZooKeeper!!!
配景先容

这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习情况,供我学习。

  • 2C4G 编号 h121
  • 2C4G 编号 h122
  • 2C2G 编号 h123

ZooKeeper简介

焦点特性


  • 分布式同等性包管:

    • 提供序次同等性(全部更新哀求按序次实验)
    • 原子性(更新要么乐成要么失败)
    • 单一体系镜像(无论毗连到哪个服务器,客户端看到的数据视图都是同等的)
    • 可靠性(一旦更新被应用,将保持到被下一次更新覆盖)
    • 实时性(客户端在肯定时间内能看到最新的数据)

  • 数据模子:

    • 本质上是一个分布式的小文件存储体系,接纳雷同Unix文件体系的树形条理布局(称为ZNode Tree)
    • 每个节点(ZNode)可以存储少量数据(默认上限1MB)
    • 节点分为长期节点(PERSISTENT)和暂时节点(EPHEMERAL),后者在会话竣过后主动删除

  • 监控监控机制(Watcher):

    • 客户端可以注册监听特定节点的变革
    • 当节点数据变更或子节点列表变革时会触发关照
    • 接纳一次触发机制,收到关照后须要重新注册

典范应用场景


  • 同一定名服务:

    • 如Dubbo服务注册中心,服务提供者将服务所在注册到ZooKeeper
    • 消耗者从ZooKeeper获取可用的服务列表
    • 示例:/dubbo/com.example.Service/providers目次下存储服务提供者URL

  • 分布式设置管理:

    • 如Solr集群设置同步,全部节点监听设置节点
    • 设置变更时,管理员更新ZooKeeper上的设置数据
    • 各节点收到变更关照后主动获取新设置
    • 示例:/solr/configs/mycore目次存储焦点设置

  • 分布式消息队列:

    • 实现发布/订阅模式(Pub/Sub)
    • 生产者创建序次节点作为消息
    • 消耗者监听父节点获取新消息
    • 示例:/queue/msg-0000000001,/queue/msg-0000000002

  • 分布式锁:

    • 实现互斥锁:多个客户端竞争创建同一个暂时节点,乐成创建的得到锁
    • 实现共享锁:通过节点序次特性实现读写锁
    • 锁开释:会话竣事主动删除暂时节点或主动删除

  • 集群管理:

    • 监控监控集群节点存活状态(通过暂时节点)
    • 推举主节点(通过节点序号最小的成为Master)
    • 示例:/cluster/node1(暂时节点)主动消散表现节点下线

工作原理

ZooKeeper集群是一个高可用的分布式和谐服务,其焦点架构和运行机制如下:

  • 集群构成与节点数量


  • 典范摆设包罗3个、5个或7个服务器节点(必须为奇数)
  • 奇数数量便于推举时形成多数派(quorum),如:

    • 3节点集群可容忍1个节点故障(须要2个节点存活)
    • 5节点集群可容忍2个节点故障(须要3个节点存活)

  • 每个节点都存储完备的数据副本

  • 同等性协议


  • 接纳ZAB(ZooKeeper Atomic Broadcast)协议,该协议包罗两个重要阶段:
    a) 推举阶段:当Leader失效时,剩余节点通过投票选出新Leader
    b) 广播阶段:Leader将变乱哀求以提案情势广播给全部Follower
  • 须要得到多数节点(N/2+1)的ACK才气提交变乱
  • 全部写使用都通过Leader处置惩罚,读使用可由恣意节点相应

  • 哀求处置惩罚流程


  • 客户端可以毗连到集群中的恣意节点
  • 对于写哀求:

    • 吸取节点会将哀求转发给Leader
    • Leader天生变乱提案并广播
    • 得到多数确认后提交并相应客户端

  • 对于读哀求:

    • 可直接由吸取节点本地相应(大概读到稍旧数据)
    • 可选sync使用确保读取最新数据


  • 容错机制


  • 故障检测通过心跳机制实现
  • Leader失效时会主动触发新的推举
  • 集群连续服务须要保持多数节点存活
  • 数据长期化到磁盘,重启后主动规复

  • 典范应用场景


  • 分布式锁服务
  • 设置管理中心
  • 定名服务
  • 集群成员管理
  • 选主服务
在实际生产情况中,通常会将ZooKeeper节点摆设在差异的物理服务器或可用区,以制止单点故障。同时发起设置监控监控体系来跟踪节点康健状态和性能指标。
架构构成

我们也将举行集群的搭建集群模式

  • h121 节点
  • h122 节点
  • h123 节点

Leader


  • ZooKeeper 集群工作的焦点脚色
  • 集群内部各个服务器的调理者
  • 变乱哀求(写使用)的唯一调理和处置惩罚者,包管集群变乱处置惩罚的序次性,对于 create,setData、delete 等有写使用的哀求,则须要同一转发给 leader 处置惩罚。
Follower


  • 处置惩罚客户端非变乱(读使用)哀求
  • 转发变乱哀求给 Leader
  • 到场集群 Leader 选择股票 2n-1 台可新增观察者脚色
Observer


  • 观察者脚色,观察 ZooKeeper 集群的最新状态变革并将这些状态同步过来,其对于非变乱哀求可以举行独立处置惩罚,对于变乱哀求,则会转发给 Leader 服务器举行处置惩罚。
  • 不会到场任何情势的投票只提供非变乱服务,通常用于不影响集群变乱处置惩罚本事的条件下提拔集群的非变乱处置惩罚本事。增长了集群增长并发的读哀求。

项目简介

Zookeeper 集群架构详解

Zookeeper 接纳主从(Leader-Follower)架构的集群模式,具体工作方式如下:
集群构成布局


  • 由 1个Leader节点 和 多个Follower节点 共同构成集群
  • 典范摆设发起3个或5个节点(奇数个),如许可以包管推举时能明白产生多数派
节点脚色分工

Leader节点


  • 负责处置惩罚全部 写哀求 的变乱使用
  • 管理 投票过程,和谐集群决定
  • 发起并实验 状态更新 使用
  • 将变乱日记(Zxid)同步给Follower节点
  • 示例:当客户端发起创建节点的哀求时,只有Leader能处置惩罚这个写使用
Follower节点


  • 担当客户端读哀求 并直接返回效果(提供高可用读取)
  • 在 Leader推举 过程中到场投票
  • 同步Leader的数据变更,保持数据同等性
  • 可以处置惩罚 非变乱性写哀求(如exists/getData等)
  • 当Leader失效时,Follower会到场新Leader的推举
集群容错机制


  • 过半存活原则:只要集群中高出半数的节点存活(如3节点集群中至少2个存活),Zookeeper就能继续正常工作
  • 这种计划包管了:

    • 5节点集群可容忍2个节点故障
    • 3节点集群可容忍1个节点故障
    • 7节点集群可容忍3个节点故障

数据同等性包管


  • 全局数据同等:

    • 每个Server节点都生存 完备的数据副本
    • 无论客户端毗连到哪个节点(Leader或恣意Follower),看到的数据都是同等的
    • 实现方式:使用ZAB协议(Zookeeper Atomic Broadcast)包管数据同步

  • 序次同等性:

    • 全部更新哀求按照 全局严酷序次 实验
    • 每个更新使用都会被分配一个全局唯一的zxid(Zookeeper Transaction ID)
    • 示例:假如使用A的zxid是0x100001,使用B是0x100002,那么A肯定在B之前实验

  • 原子性包管:

    • 数据更新具有原子性特性
    • 一次数据更新要么 完全乐成(被集群多数节点确认)
    • 要么 完全失败(未被多数节点确认)
    • 不会出现部门乐成的情况

实际应用场景

这种架构计划使得Zookeeper特殊适互助为:

  • 分布式体系的设置中心
  • 定名服务
  • 分布式锁服务
  • 集群管理
  • 选主服务
比方在Kafka集群中,就使用Zookeeper来存储和和谐broker、topic和partition的元数据信息。
搭建方式

搭建有分为几种方式:

  • 单机模式:ZooKeeper只运行在一台服务器上,得当测试情况。
  • 伪集群模式:就是在一台呆板上运行多个 ZooKeeper
  • 集群模式:生产情况,多台呆板
下载服务
  1. http://zookeeper.apache.org/releases.html
复制代码
这里我选择:3.8.4 版本举行安装测试,这是最新的稳固版本。
下载所在如下,你可以使用 wget 举行下载
  1. https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
复制代码
下载完成至服务器节点
解压安装
  1. cd /opt/software/
  2. tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz -C ../servers/
复制代码

文件夹设置

数据文件夹
  1. cd /opt/servers/apache-zookeeper-3.8.4-bin
  2. mkdir -p /opt/servers/apache-zookeeper-3.8.4-bin/data
复制代码
日记文件夹
  1. cd /opt/servers/apache-zookeeper-3.8.4-bin
  2. mkdir -p /opt/servers/apache-zookeeper-3.8.4-bin/logs
复制代码
设置文件

  1. cd /opt/servers/apache-zookeeper-3.8.4-bin/conf
  2. mv zoo_sample.cfg zoo.cfg
  3. vim zoo.cfg
复制代码
修改为如下的内容:
  1. # 数据和日志日志文件夹
  2. dataDir=/opt/servers/apache-zookeeper-3.8.4-bin/data
  3. dataLogDir=/opt/servers/apache-zookeeper-3.8.4-bin/logs
  4. # 集群地址
  5. server.1=h121.wzk.icu:2888:3888
  6. server.2=h122.wzk.icu:2888:3888
  7. server.3=h123.wzk.icu:2888:3888
  8. # 清理日志日志 1小时
  9. autopurge.purgeInterval=1
复制代码
修改效果如下图:

myid设置

我们须要在数据目次下新建一个叫 myid 文件夹,内容为1,后续集群要用到:
  1. cd /opt/servers/apache-zookeeper-3.8.4-bin/data
  2. echo 1 > myid
复制代码
至此,我们 ZooKeeper 的单机安装完成!!!
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表