Kafka Broker 核心原理全解析:存储、高可用与数据同步

思维导图

在这里插入图片描述

正文:Kafka Broker 核心原理深度剖析

Kafka 作为高性能的分布式消息队列,其 Broker 节点的设计是支撑高吞吐、高可用的核心。本文将从存储结构、消息清理、高可用选举、数据同步四个维度,解析 Kafka Broker 的工作原理。

一、Kafka Broker 存储原理:如何高效管理海量消息?

1. 分区与副本:横向扩展与可靠性的基石
  • 分区(Partition)

    一个 Topic 被拆分为多个 Partition,分布在不同 Broker 上实现横向扩展。单个 Partition 内的消息顺序写入,但全局无序。例如 tom-topic 可分为 Partition0、Partition1 等,每个分区对应独立的物理目录(如 tom-topic-0)。

  • 副本(Replica)

    为避免单节点故障导致数据丢失,每个 Partition 可设置多个副本(通过 replication-factor 配置)。副本分为:

    • Leader:对外提供读写服务;

    • Follower:仅从 Leader 异步拉取数据,保持同步。

      注意:副本数不能超过 Broker 节点数,否则会报错。

2. 副本分布规则:均衡负载与容灾

Kafka 通过 assignReplicasToBrokers 函数分配副本,核心规则包括:

  1. 分区 0 的第一个副本随机分配到某个 Broker;

  2. 其他分区的第一个副本按 “蛇形走位” 分布(如 Broker2→Broker3→Broker1→Broker2…);画图表示 “蛇形走位” ;
    在这里插入图片描述

  3. 同一分区的副本必不在同一 Broker,避免单点故障。

例如,4 个分区、2 个副本的 Topic 会将 8 个副本均衡分布到 3 台 Broker 上(3:3:2),确保负载均衡。

3. Segment 机制:避免文件过大的拆分策略

为防止单个日志文件无限膨胀,Kafka 将每个 Partition 拆分为多个 Segment,每个 Segment 包含:

  • .log:存储消息数据;

  • .index:Offset 与消息物理位置的映射(稀疏索引);

  • .timeindex:时间戳与 Offset 的映射。

Segment 切分触发条件

  • 大小达到阈值(默认 1G,由 log.segment.bytes 控制);

  • 时间超过阈值(默认 1 周,由 log.roll.hours 控制);

  • 索引文件满(默认 10M,由 log.index.size.max.bytes 控制)。

4. 稀疏索引:平衡查询效率与存储成本

Kafka 采用 稀疏索引(非每条消息都建索引),通过 log.index.interval.bytes(默认 4KB)控制索引密度:每写入 4KB 数据,生成一条索引记录。

  • 优势:减少索引文件大小,降低维护成本;

  • 查询流程:先通过二分法定位 Segment,再在索引中查找最近 Offset,最后在 .log 文件中遍历匹配。

5. 总结

Kafka存储结构:

在这里插入图片描述

二、消息保留与清理机制:如何防止磁盘撑爆?

Kafka 通过两种策略管理消息生命周期,可通过 log.cleanup.policy 配置(默认 delete)。

1. 删除策略(Delete)

定时任务(默认每 5 分钟,log.retention.check.interval.ms)触发删除,规则包括:

  • 时间阈值:默认保留 1 周(log.retention.hours),支持分钟(log.retention.minutes)或毫秒级配置;

  • 大小阈值:通过 log.retention.bytes 限制总大小,超过后从最旧数据开始删除。

2. 压缩策略(Compact)

针对 Key 重复的消息(如 __consumer_offsets 主题),压缩后仅保留最新版本。例如:

  • 原消息:k1:aa → k1:ii → k1:kk

  • 压缩后:仅保留 k1:kk(最新 Offset)。

    压缩可减少存储空间,但会导致 Offset 不连续(不影响查询)。

在这里插入图片描述

三、高可用机制:如何保证服务不中断?

1. Controller 选举:集群的 “管理者”

Kafka 通过 Zookeeper 选举唯一的 Controller 节点,负责管理全集群元数据:

  • 选举方式:所有 Broker 竞争创建 Zookeeper 临时节点 /controller,成功创建者成为 Controller;

  • 故障转移:若 Controller 宕机,Zookeeper 临时节点消失,其他 Broker 重新竞争。

2. Leader 选举:分区级别的高可用

当 Leader 副本故障时,需从副本中选举新 Leader,核心逻辑如下:

  • 候选集:仅 ISR(In-Sync Replicas) 中的副本有资格(与 Leader 保持同步的副本);

  • 选举规则:ISR 列表中按优先级排序(如副本列表 [146,144,145] 中优先选择 146);

  • 极端情况:若 ISR 为空,可开启 unclean.leader.election.enable 允许 OSR(落后的副本)参选,但可能导致数据丢失。

四、数据同步与故障处理:如何保证数据一致性?

1. 核心概念:LEO 与 HW
  • LEO(Log End Offset):每个副本中下一条待写入消息的 Offset(即当前最大 Offset + 1);

  • HW(High Watermark):ISR 中所有副本的最小 LEO,消费者只能消费 HW 之前的消息(确保数据已同步到多数副本)。
    在这里插入图片描述

2. 同步流程:Follower 如何追平 Leader?
  1. Follower 向 Leader 发送拉取请求(fetch);

  2. Leader 响应数据,Follower 写入消息并更新自身 LEO;

  3. Leader 收集所有 ISR 副本的 LEO,更新全局 HW。

3. 故障处理机制
  • Follower 故障

    故障时被踢出 ISR,恢复后先截断 HW 之后的消息(避免脏数据),重新同步追上 Leader 后,重新加入 ISR。

  • Leader 故障

    从 ISR 中选举新 Leader,其他 Follower 截断 HW 之后的消息,向新 Leader 同步数据,保证副本一致性。

总结

Kafka Broker 通过分区与副本实现扩展与可靠性,通过Segment 与稀疏索引高效管理存储,通过Controller 与 ISR 选举保障高可用,通过LEO 与 HW 机制确保数据同步一致性。这些设计共同支撑了 Kafka 高吞吐、低延迟、高容错的核心能力,使其成为分布式系统中消息传递的首选方案。

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

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

相关文章

RTTR反射机制示例

1. Person类型头文件 #ifndef PERSON_H …

计数组合学7.21(有界部分大小的平面分拆)

7.21 有界部分大小的平面分拆 本节的主要目标是在 q1q 1q1 的情况下细化定理 7.20.1,通过限制平面分拆 π∈P(r,c)\pi \in P(r, c)π∈P(r,c) 的最大部分的大小。例如,考虑特殊情况 r1r 1r1,此时 π\piπ 只是一个不超过 ccc 个部分的普通分…

Product Hunt 每日热榜 | 2025-08-26

1. Trace 标语:人类与人工智能的工作流程自动化 👾 介绍:一个工作流程自动化平台,将任务分配给合适的处理者——无论是人类还是人工智能。通过连接像Slack、Jira和Notion这样的工具,Trace能够拆解现有工作流程&#…

llama.cpp reranking源码分析

大模型时代,reranker一直是提高RAG有效性的重要工具。相对于初筛阶段向量检索,精排阶段的reranker需要query和每个候选document做相关计算。初筛已经将候选documents限制在一个相对较小范围,但依然要进行大量的相关性计算。 llama.cpp是广泛…

ruoyi-vue(十二)——定时任务,缓存监控,服务监控以及系统接口

一 定时任务 1、 定时任务使用 1.1 概述 在实际项目开发中Web应用有一类不可缺少的,那就是定时任务。 定时任务的场景可以说非常广泛,比如某些视频网站,购买会员后,每天会给会员送成长值,每月会给会员送一些电影券&…

spring如何通过实现BeanPostProcessor接口计算并打印每一个bean的加载耗时

文章目录实现说明:注意事项:要在Spring中通过BeanPostProcessor接口计算并打印每个Bean的加载耗时,我们可以利用该接口的两个回调方法记录Bean初始化前后的时间戳,然后计算时间差。 以下是实现方案: 首先创建一个实现B…

“品种+创新销售”,恩威医药半年度业绩翻倍增长

8月25日晚,恩威医药发布2025年半年度报告,报告期内,公司实现营业收入4.49亿元,同比增长15.73%,归属于上市公司股东净利润达3834.42万元,同比增幅113.80%,扣除非经常性损益净利润为3527.57万元&a…

【机器学习】机器学习算法

机器学习1、K-近邻算法KNN1.1、举例:电影类型分析1.2、KNN算法流程1.3、Scikit-learn工具1.4、K-近邻算法API1.5、距离度量1.5.1、欧式距离Euclidean Distance🔥1.5.2、曼哈顿距离Manhattan Distance🔥1.5.3、切比雪夫距离Chebyshev Distance…

python-批量安装库

要将当前环境中已安装的Python库列表导出为一个可重用的格式(通常为requirements.txt),以便在另一个环境中再现这些库的安装,可以使用pip工具提供的功能。以下是具体步骤:### 使用pip freeze1. **打开命令提示符或终端…

创龙3576ububuntu系统设置静态IP方法

创龙3576ububuntu系统设置静态IP方法,执行命令进入"/etc/systemd/network/"目录,请根据实际网络环境,下面演示修改 eth0.network 网口静态ip为192.168.1337.200执行:vim /etc/systemd/network/eth0.network 增加一句&am…

MySQL - 视图,事务和索引

目录一、视图1. 问题2. 视图是什么3. 定义视图4. 查看视图5. 使用视图6. 删除视图7. 视图的作用二、事务1. 定义2. 事务命令1)回滚2)提交3)脏写、脏读、不可重复读和幻读三、索引1. 定义2. 索引是什么3. 索引目的4. 索引原理5. 索引的使用6. …

车载铁框矫平机:把“钣金诊所”开到工地上

——一次从原子层面开始的平整之旅一、先想一想:铁框为什么“脾气大” 钢板在轧制、切割、焊接、吊装、甚至太阳暴晒时,内部晶粒被拉得七扭八歪,像揉皱的纸。宏观上,我们就看到“翘、拱、扭”。矫平,实质上是给金属做一…

不安全的服务器,不支持 FTP over TLS

当服务器不支持 FTP over TLS(也称为 FTPS)时,意味着它仅支持未加密的 FTP 连接。这种情况存在显著的安全风险,因为:数据传输不加密:用户名、密码以及传输的文件内容都会以明文形式在网络中传输&#xff0c…

本地缓存与 Redis 缓存的区别与实际应用

缓存是提升系统性能、降低数据库压力的重要手段。Java 开发中常用的缓存方案包括 ​本地缓存(如 Caffeine、Guava Cache)​​ 和 ​分布式缓存(如 Redis)​。这两者在设计目标、使用场景、性能特点等方面有显著差异,合…

从“0”开始学JAVA——第十一节 I/O流

在Java编程中&#xff0c;文件操作和输入输出(IO)处理是必不可少的部分。本文将深入探讨Java IO包中的文件流操作&#xff0c;包括基础概念、分类、常用类以及实际应用场景。1. File类File类是Java IO操作的基础&#xff0c;它实现了Serializable和Comparable<File>接口。…

【数据价值化】数据资产入表指南:核心准则与实操路径

随着数据要素市场的蓬勃发展&#xff0c;数据资产的商业价值愈发凸显。然而&#xff0c;如何让数据资产合规、合理地进入企业财务报表&#xff0c;成为众多企业急需解决的难题。本文基于《企业会计准则》的相关规定&#xff0c;为您系统梳理数据资产入表的核心准则要点与实操路…

基于 MediaPipe + Three.js 的实时姿态可视化前端

这是一套前端实时姿态捕获与 3D 可视化的 DEMO&#xff0c;特点是启动快、UI 现代、渲染稳定&#xff0c;同时对设备性能与网络情况做了多处优化。 预览地址 技术栈与核心依赖 框架与工程&#xff1a;Vite React TypeScript实时姿态识别&#xff1a;MediaPipe Tasks Vision&…

【分布式技术】Kafka 数据积压全面解析:原因、诊断与解决方案

Kafka 数据积压全面解析&#xff1a;原因、诊断与解决方案Kafka 数据积压深度解析与解决方案全景指南一、数据积压核心原因矩阵二、生产者侧问题深度解析1. 突发流量洪峰2. 大消息阻塞管道三、消费者侧问题深度解析1. 消费能力不足2. 消费逻辑阻塞四、Broker集群问题深度解析1.…

企业云办公安全指南:如何构建高效无忧的云办公环境?

2025年&#xff0c;全球化协作与混合办公已成为企业运营的常态。越来越多的企业将业务迁移至云端&#xff0c;云办公在提升灵活性与效率的同时&#xff0c;也带来了新的安全挑战——数据泄露、内部威胁、网络攻击等风险无处不在&#xff0c;每一个环节都可能成为企业核心资产的…

Thingsboard 租户管理员权限,增加租户普通用户权限

在 ThingsBoard CE&#xff08;社区版&#xff09;中&#xff0c;租户管理员拥有对规则链、客户、资产、设备、仪表板等资源的全面管理权限。如果你想为租户创建一个普通用户&#xff0c;并限制其不能操作规则链、高级功能、安全设置等&#xff0c;可以通过以下步骤实现&#x…