首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
云原生
›
大数据-26 ZooKeeper 分布式和谐框架 简介与设置 Leader ...
返回列表
发新帖
大数据-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
集群模式:生产情况,多台呆板
下载服务
http://zookeeper.apache.org/releases.html
复制
代码
这里我选择:3.8.4
版本
举行安装测试,这是最新的稳固
版本
。
下载所在如下,你可以使用 wget 举行下载
https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
复制
代码
下载完成至服务器节点
解压安装
cd /opt/software/
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz -C ../servers/
复制
代码
文件夹设置
数据文件夹
cd /opt/servers/apache-zookeeper-3.8.4-bin
mkdir -p /opt/servers/apache-zookeeper-3.8.4-bin/data
复制代码
日记文件夹
cd /opt/servers/apache-zookeeper-3.8.4-bin
mkdir -p /opt/servers/apache-zookeeper-3.8.4-bin/logs
复制代码
设置文件
cd /opt/servers/apache-zookeeper-3.8.4-bin/conf
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
复制代码
修改为如下的内容:
# 数据和
日志
文件夹
dataDir=/opt/servers/apache-zookeeper-3.8.4-bin/data
dataLogDir=/opt/servers/apache-zookeeper-3.8.4-bin/logs
# 集群地址
server.1=h121.wzk.icu:2888:3888
server.2=h122.wzk.icu:2888:3888
server.3=h123.wzk.icu:2888:3888
# 清理
日志
1小时
autopurge.purgeInterval=1
复制代码
修改效果如下图:
myid设置
我们须要在数据目次下新建一个叫 myid 文件夹,内容为1,后续集群要用到:
cd /opt/servers/apache-zookeeper-3.8.4-bin/data
echo 1 > myid
复制代码
至此,我们 ZooKeeper 的单机安装完成!!!
回复
使用道具
举报
返回列表
浏览过的版块
Python
数据仓库与分析
网络安全
中间件
数据安全
人工智能
Java
物联网
杀鸡焉用牛刀
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表