news 2026/6/7 3:45:16

Kafka 基础概念

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kafka 基础概念

Kafka 基础概念

Kafka 是什么?
分布式流处理平台,专为高吞吐量、低延迟的实时数据流设计。核心功能包括发布-订阅消息系统、持久化存储和流式处理。

核心组件

  • Topic:消息的逻辑分类,类似数据库表。
  • Partition:Topic 的物理分片,支持并行处理和分布式存储。
  • Broker:集群中的单个节点,负责存储和转发消息。
  • Producer:向 Topic 发布消息的客户端。
  • Consumer:从 Topic 订阅消息的客户端。
  • Consumer Group:一组协同消费同一 Topic 的 Consumer,确保每条消息仅被组内一个 Consumer 处理。

消息存储机制

消息以 Partition 为单位持久化到磁盘,每个 Partition 由多个 Segment 文件组成(含.log.index文件)。消息顺序追加,索引文件加速检索。


应用场景

何时选择 Kafka?

  • 需要高吞吐(如日志收集、实时指标分析)。
  • 要求水平扩展(如分布式系统间的数据管道)。
  • 对比 RabbitMQ:Kafka 适合大数据量、低延迟;RabbitMQ 适合复杂路由和协议支持。

实时数据处理示例
电商用户行为追踪:Producer 发送点击/购买事件到 Kafka,Flink 消费数据并实时计算推荐结果。


消息可靠性

防丢失策略

  • 生产者:设置acks=all确保 Leader 和 ISR 副本写入;启用重试。
  • Broker:配置replication.factor≥2;调整min.insync.replicas
  • 消费者:手动提交偏移量(enable.auto.commit=false)。

生产者失败处理
自动重试(通过retriesretry.backoff.ms参数控制),需注意消息幂等性。


性能优化

提高吞吐量

  • 增加 Partition 数量提升并行度。
  • 生产者:批量发送(batch.size)、压缩消息(compression.type)。
  • 消费者:调整fetch.min.bytes减少拉取次数。

磁盘 I/O 优化

  • 使用 SSD 或 RAID 提升磁盘性能。
  • 分散 Broker 日志目录到不同磁盘(log.dirs)。
  • 调整刷盘策略(如log.flush.interval.messages)。

集群管理

监控与维护

  • 工具:JMX + Prometheus + Grafana 监控吞吐、延迟、磁盘使用率。
  • 维护:定期清理过期日志(log.retention.hours)、平衡 Partition 分布。

Broker 故障处理

  • Leader 副本自动选举(从 ISR 中选择)。
  • 确保unclean.leader.election.enable=false避免数据不一致。

高级特性

幂等性与事务

  • 幂等性:防止生产者重复消息(enable.idempotence=true)。
  • 事务:跨 Topic/Partition 的原子写入(需配置transactional.id)。

分区分配策略

  • RangeAssignor:按分区范围分配,易导致负载不均。
  • RoundRobin:轮询分配,均衡但重平衡开销大。
  • StickyAssignor:减少重平衡时的分区迁移。

Kafka Connect vs. Kafka Streams

  • Connect:数据导入/导出工具(如数据库到 Kafka)。
  • Streams:客户端流处理库(如实时聚合、过滤)。

面试问题示例

  1. Kafka 如何保证消息顺序性?
  2. 解释 ISR 机制及其在故障恢复中的作用。
  3. 如何设计 Kafka 集群以实现高可用?
  4. 消费者重复消费的可能原因及解决方案。
  5. 对比 Kafka 与其他消息队列的优缺点。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 17:37:38

一文读懂监督、无监督、自监督与半监督学习:小白到大模型必备知识

文章系统介绍机器学习的四大范式:监督学习依赖标注数据训练模型;无监督学习挖掘数据内在特征完成任务;半监督学习结合少量标注和大量无标签数据提升性能;自监督学习通过设计辅助任务从无标签数据中生成监督信号。这些方法各有特点…

作者头像 李华
网站建设 2026/5/29 9:23:57

医院「排班智能体」:小模型、轻部署、强适配

上周的医疗大会,医院的专家领导们分享了智能体在医院的应用,内容比较多,但一个不起眼的应用场景,让人眼前一亮,“通俗易懂”的体现了AI agent的场景化价值:『排班智能体』。一个不起眼的排班智能体&#xf…

作者头像 李华
网站建设 2026/5/9 10:55:43

MS SQL Server partition by 函数实战二 编排考场人员

目录 需求 输出效果 范例运行环境 表及视图样本设计 功能实现 生成考场数据 生成重复的SQL语句 封装为统计视图 编写存储过程实现统计 小结 需求 假设有若干已分配准考证号的考生,准考证号示例(01010001)共计8位,前4位…

作者头像 李华
网站建设 2026/5/29 23:11:30

Java进阶:IO大全

Java进阶:IO第一章 Java 中 IO Java 中 IO 流分为几种 按照流的流向分,可以分为输入流和输出流;按照操作单元划分,可以划分为字节流和字符流;按照流的角色划分为节点流和处理流。 Java Io 流共涉及 40 多个类&#xff…

作者头像 李华
网站建设 2026/6/5 3:41:06

使用dify搭建爬虫Agent工作流

最近用Dify做了一个工作流应用,可以实现自动化采集亚马逊商品信息,包括名称、价格、折扣、评分、评论等关键字段,然后使用DeepSeek对商品竞争力、价格、用户口碑进行分析,为跨境卖家提供一份完整的分析报告。 整个工作流搭建用到了…

作者头像 李华
网站建设 2026/6/4 23:21:47

【毕业设计】基于python机器学习的道路坑洼识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华