当前位置: 首页 > news >正文

Java高频面试题:Zookeeper集群数据是如何同步的?

大家好,我是锋哥。今天分享关于【Java高频面试题:Zookeeper集群数据是如何同步的?】面试题 。希望对大家有帮助;

Java高频面试题:Zookeeper集群数据是如何同步的?


1️⃣ Zookeeper 集群概念回顾

  • Zookeeper 是一个分布式协调服务,通常用来管理配置、命名服务、分布式锁等。
  • 集群模式下(称为ensemble),Zookeeper 集群通常由奇数个节点组成(3、5、7 节点最常见),保证多数派(quorum)原则。
  • 每个节点都有完整的数据副本,称为ZNode 数据树

所以核心问题是:多个副本如何保持一致?这就是 Zookeeper 的数据同步机制。


2️⃣ 数据同步的核心机制:Zab 协议

Zookeeper 使用Zab(ZooKeeper Atomic Broadcast)协议来保证数据一致性。Zab 是一种原子广播协议,类似于 Raft 或 Paxos。它的核心作用是保证所有事务(写操作)在集群节点中按相同顺序执行

2.1 节点角色
  • Leader:负责接收客户端写请求,生成事务 ID(zxid),广播给 Follower。
  • Follower:接收 Leader 的事务提议(proposal),同步到本地数据。
  • Observer(可选):不参与投票,但接收数据更新,减少负载。

3️⃣ 数据同步流程(写操作)

假设客户端向集群写入数据(比如创建一个 znode),整个同步流程如下:

步骤 1:客户端请求写操作
  • 客户端连接到任意节点(Leader 或 Follower)。
  • 如果连接到 Follower,Follower 会转发请求给 Leader
步骤 2:Leader 生成事务 ID(zxid)
  • 每个写操作都会分配一个全局递增的 zxid(事务 ID)。
  • zxid 保证了集群中的操作顺序。
步骤 3:Leader 广播提议(Proposal)
  • Leader 将事务提议广播给所有 Follower
  • 这叫“提议阶段”(proposal phase)。
步骤 4:Follower 记录提议
  • Follower 收到提议后,会写入本地事务日志(transaction log)。
  • 然后向 Leader 发送ACK确认。
步骤 5:Leader 等待多数 ACK
  • Leader 等到大多数节点(quorum)确认
  • 一旦获得多数 ACK,Leader 就发送COMMIT 指令
步骤 6:Follower 应用事务
  • Follower 收到 COMMIT 后,将事务写入内存数据树
  • 同时写入本地磁盘快照和日志。
  • 此时事务完成,客户端收到响应。

⚡ 关键点:写操作只有在多数派确认后才算完成。这保证了即使部分节点宕机,集群数据依然一致。


4️⃣ 数据同步(Follower 启动或滞后同步)

有两种情况需要同步:

4.1 新节点加入
  • 新节点启动时,需要全量同步(snapshot)Leader 的当前数据树。
  • 先从 Leader 拷贝最新快照(snapshot),然后从日志中应用增量事务。
4.2 节点滞后
  • 如果某个 Follower 落后,它会向 Leader 请求缺失的事务记录
  • Leader 将这些缺失的事务发送给 Follower,Follower 按顺序应用。
  • 这叫同步补全(catch-up)

5️⃣ 读操作的同步

  • 默认读操作可以由任何节点直接返回最新的数据,称为最终一致性读
  • 如果需要强一致性读,可以客户端请求Leader读取,保证返回最新提交的事务

6️⃣ 数据持久化与恢复

  • Zookeeper 会将事务日志写入磁盘。
  • 定期生成快照(snapshot),减少恢复时的日志重放量。
  • 集群重启或节点故障时,可以从快照 + 日志恢复数据。

7️⃣ 总结

  1. Zookeeper 的数据同步靠Zab 协议实现原子广播。
  2. 写操作经过Leader 提议 → Follower ACK → Leader COMMIT → Follower 应用流程。
  3. 集群保证多数派提交,确保一致性。
  4. 节点启动或滞后时可以通过全量或增量同步追赶数据。
  5. 读操作可弱一致或强一致。
http://www.jsqmd.com/news/535362/

相关文章:

  • 别再死记硬背了!用STC-ISP一键生成11.0592MHz晶振的4800波特率代码(附SMOD位详解)
  • C#实战:5分钟搞定Winform鼠标坐标实时追踪(附API对比)
  • 北京回收宣纸|藏家担心被压价?丰宝斋上门鉴定,报价公允透明 - 品牌排行榜单
  • 具身智能:让AI拥有「身体」,机器人革命的下一个引爆点
  • AI视频生成终极指南:ComfyUI-WanVideoWrapper完整实践方案
  • TileLang:革新GPU编程的领域特定语言,助力开发者突破性能瓶颈
  • 5分钟搞定!DeepSeek-OCR网页版一键部署,零基础也能搭建自己的文字识别工具
  • 从功能产品经理到AI产品经理:你的转型指南,高薪职位等你来!产品经理转行AI领域指南
  • StructBERT零样本分类-中文-base在新闻推荐系统中的应用
  • 2026涂胶设备选购参考:直销厂家性能与价格综合评测,正规的涂胶设备源头厂家口碑分析典焦发自动化发展迅速,实力雄厚 - 品牌推荐师
  • clang-format配置全攻略:从基础规则到自定义团队规范
  • 收藏!小白程序员轻松入门大模型:RAG技术详解与实战学习资料免费领
  • 3个Pixel It色彩定制功能实现像素艺术创作自由
  • 零门槛搭建MiroFish群体智能引擎:从基础部署到深度开发全指南
  • 解锁美妆设计新趋势:2026年服务大品牌的热门公司,市面上美妆设计分析帕特广告发展迅速,实力雄厚 - 品牌推荐师
  • 零代码播客创作新范式:SoulX-Podcast全流程指南
  • 2026年太原豆包优化服务商TOP5深度测评:从技术到效果的实战选型指南 - 小白条111
  • ElasticSearch 原理、使用场景及核心特性详解
  • C语言程序员转型AI:使用PyTorch C++ API在RTX4090D上进行模型推理
  • LLM 的洗车悖论:各大厂商的顶尖模型为什么会被常识题绊倒
  • 5个高效理由:Spec Kit与uv工具链重塑Python开发流程
  • 攻克三维感知难题:Intel RealSense点云技术实战指南
  • 如何突破本地计算瓶颈?3D计算云端架构的开发指南
  • 2026西安注册公司服务机构深度评测:五大实力品牌横向对比 - 2026年企业推荐榜
  • 2026年夹植物板实力厂家分析,这些品牌值得关注!防火树脂板/液态金属板/植物树脂板/树脂饰面板,夹植物板品牌联系方式 - 品牌推荐师
  • QT+QCustomPlot实战:用QCPColorMap绘制实时Lofar谱图,解决setCell只显示整数的问题
  • 2026年驻马店豆包优化服务商TOP5深度评估:从技术实力到效果落地的选型指南 - 小白条111
  • 项目分享|agent-browser:Vercel开源的AI智能体浏览器自动化CLI工具
  • JetBrains IDE试用期管理工具:ide-eval-resetter全面指南
  • 数据绑定组件--ListView 组件