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

Kafka多副本机制

副本和副本因子

Kafka 会为每个 Partition 创建多个副本。这些副本分布在不同的 Broker 上。副本确保了数据的冗余存储,即使某个 Broker 宕机或失效,其他副本可以继续提供服务。

副本因子指的是每个 Partition 有多少个副本。副本因子的设置决定了一个 Partition 会有多少个副本,默认情况下副本因子为 3,表示每个 Partition 有 3 个副本。

Kafka中的副本类型

Leader副本

每个 Partition 都有一个 Leader 副本,它负责处理所有的生产(写入)和消费(读取)请求。所有的生产者和消费者都与 Leader 副本交互,读写操作都通过 Leader 来完成。

Follower副本

其余副本为 Follower 副本,它们被动地从 Leader 副本同步数据。Follower 副本不会直接处理读写请求,只是复制 Leader 副本上的数据。

副本间的数据同步

Follower 副本通过 日志复制 从 Leader 副本获取数据。Kafka 使用 Zookeeper(在新版的 Kafka 中,也可以使用 Kafka 自身的控制器机制)来协调 Leader 和 Follower 副本的同步。Follower 副本会从 Leader 副本拉取数据并存储,确保副本数据一致。Kafka 提供了 同步复制异步复制 机制。

同步复制

指的是在写入数据时,Leader 副本会等待所有同步副本(包括 Follower 副本)确认已经成功接收到数据后,再向生产者返回成功响应。这种方式保证了数据的一致性,但可能会导致较高的延迟。

异步复制

Leader 副本在写入数据后,可以立即返回给生产者,而不等待 Follower 副本的确认。这样可以提高性能,但可能导致数据在某些副本未同步完成时发生故障的情况,造成数据丢失。

副本选举(ISR机制)

Leader 副本会根据 ISR(In-Sync Replicas) 列表来决定哪些副本是最新的。如果 Leader 副本失败,Kafka 会自动从 ISR 中选举一个新的 Leader 副本,继续处理请求,避免服务中断。

ISR(In-Sync Replicas)

ISR表示当前与 Leader 副本保持同步的副本列表。所有同步副本都必须落后于 Leader 副本的数据最大延迟才能被视为 ISR。换句话说,ISR 列表中的副本必须在一定的时间窗口内完成数据的同步才能继续作为可用副本。

副本追赶:如果某个 Follower 副本未能及时同步数据,它会被移出 ISR 列表。只有重新赶上 Leader 副本的数据之后,才能重新进入 ISR 列表。

ISR 保证了 Kafka 的数据一致性和容错能力,只有处于 ISR 列表中的副本才有资格成为新的 Leader 副本。这样,Kafka 可以确保即使发生 Broker 故障,也能快速恢复服务。

http://www.xdnf.cn/news/14412.html

相关文章:

  • python 将字典的值替换为键名作为变量名的形式(带缩进)
  • 基于51单片机的直流电动控制速度系统proteus仿真
  • leetcode 分割回文串 java
  • 总结用ubuntu一直以来遇到的问题
  • 加盐加密算法
  • 浏览器基础及缓存
  • 【Linux】Linux 信号驱动I/O
  • Git 配置 SSH 密钥与私钥教程(跨平台完整指南)
  • 京东API接口最新指南:店铺所有商品接口的接入与使用
  • 易语言模拟真人鼠标轨迹算法 - 非贝塞尔曲线
  • 大模型的开发应用(十一):对话风格微调项目(下):微调与部署
  • 《AI辅助编程:从零掌握核心逻辑》工作坊开业
  • mysql修改密码笔记
  • 基于51单片机的智能小车:按键调速、障碍跟踪、红外循迹与数码管显示(一个合格的单片机课设)
  • 浙江康冠锁业携智能锁具亮相2025上海国际快递物流展
  • 山东大学软件学院创新项目实训开发日志——第十七周(二)
  • 【C语言扩展识别实数负数】2022-5-29
  • Web第二次方向考核复盘
  • OpenHarmony 5.0读取文件并写入到另一份文件(公共文件夹),并保持原先的格式以及编码类型
  • 论文略读:Does Refusal Training in LLMs Generalize to the Past Tense?
  • Hierarchical Vector Quantization for Unsupervised Action Segmentation
  • 介质访问控制——随机访问控制
  • Java的DI依赖注入
  • 2025如何快速给人物模型添加骨骼
  • 【Python机器学习(一)】NumPy/Pandas手搓决策树+使用Graphviz可视化(以西瓜书数据集为例)
  • 【深度剖析】领信卓越:福耀玻璃的数字化转型(上篇2:转型动机分析)
  • 嵌入式知识篇---三种坐标系
  • 揭开肾细胞的分子密码:当 METTL3 遇上 FOSL1【AbMole】
  • Android 与 ESP-01 WIFI模块通信
  • Tomcat 配置双击启动