kafka学习要点

一、核心基础概念

  1. 核心角色:Producer(生产者,发消息)、Consumer(消费者,读消息)、Broker(集群节点,存消息 / 处理请求)
  2. 消息载体:Topic(消息逻辑分类),下分多个 Partition(物理存储单元,FIFO 有序,是并行性核心)
  3. 高可用保障:Partition 的 Replica(副本),分 Leader(处理读写)和 Follower(同步备份),ISR(同步副本集)内副本可参与 Leader 选举
  4. 消费核心:Consumer Group(消费者组),组内消费者均分 Topic 分区(避免重复消费),不同组可独立消费(实现广播)
  5. 位置标识:Offset(分区内消息唯一偏移量),消费者通过 Offset 标记消费位置,支持断点续传

二、核心设计(高吞吐 / 高可用关键)

  1. 架构:无主从集群,Kafka≥2.8 用 KRaft 管理元数据(替代 ZooKeeper)
  2. 高吞吐:磁盘顺序写 + 零拷贝 + 批量收发 + 分区并行处理
  3. 高可用:副本同步 + ISR 机制 + 故障自动 Leader 选举
  4. 持久化:消息落地磁盘,支持按时间 / 大小配置保留策略,过期自动清理

三、核心流程

1. 生产者发消息

指定 Topic→通过分区器(按 key 哈希 / 无 key 轮询)确定 Partition→发送到该 Partition 的 Leader→Leader 同步至 ISR 所有 Follower→收到 ISR 全部 ACK 后,向生产者返回成功(ACK 级别可配置)

2. 消费者消费消息

消费者组订阅 Topic→完成分区分配→拉取(Pull)对应 Partition 的消息(指定 Offset)→处理消息→提交 Offset(自动 / 手动,标记消费位置)

四、高频核心配置

1. 生产者
  • acks:确认级别(0 = 不等待确认 / 1=Leader 确认 /-1=ISR 全确认,生产推荐 - 1)
  • batch.size/linger.ms:批量发送阈值 / 等待时间,平衡吞吐与延迟
  • retries:重试次数(生产推荐 3-5,解决网络抖动)
2. 消费者
  • group.id:消费者组标识(必配,同组均分分区)
  • auto.offset.reset:Offset 无效时策略(earliest = 从开头消费 /latest = 从最新消费)
  • enable.auto.commit:是否自动提交 Offset(生产推荐 false,手动提交避免消息丢失)
3. Topic
  • partitions:分区数(可增不可减,决定并行度,建议≥消费者组最大消费者数)
  • replication.factor:副本数(生产≥2,推荐 3,保证高可用)

五、生产核心问题 & 避坑

  1. 消息丢失:生产者设 acks=-1 + 开启重试,消费者用手动提交 Offset
  2. 重复消费 :因 Offset 提交失败 / 重平衡导致,消费逻辑需实现幂等性
  3. 分区重平衡(Rebalance):消费者上下线触发,会短暂停消费,尽量保持消费者数量稳定
  4. 幂等 / 事务:生产者开启幂等性避免重复发,跨 Topic / 分区需用 Kafka 事务
相关推荐
迷路爸爸18013 小时前
Docker 入门学习笔记 06:用一个可复现的 Python 项目真正理解 Dockerfile
笔记·学习·docker
ghie909014 小时前
基于学习的模型预测控制(LBMPC)MATLAB实现指南
开发语言·学习·matlab
Engineer邓祥浩14 小时前
JVM学习笔记(6) 第二部分 自动内存管理 第5章节 调优案例分析与实战
jvm·笔记·学习
倒酒小生14 小时前
4月7日算法学习小结
linux·服务器·学习
xinzheng新政14 小时前
Javascript·深入学习基础知识2
开发语言·javascript·学习
电磁脑机14 小时前
人脑电磁路由拓扑与外耦合脑机接口基础理论
分布式·神经网络·安全·交互
马剑威(威哥爱编程)14 小时前
HarmonyOS 6.0 分布式任务调度 API 详解:把多设备玩成单设备
分布式·华为·harmonyos
世人万千丶14 小时前
开源鸿蒙跨平台Flutter开发:儿童数理认知与神经塑性演化引擎_突触发生与工作记忆测绘架构
学习·flutter·华为·开源·harmonyos
ZhiqianXia14 小时前
PyTorch 学习笔记(10) : PyTorch torch.library
pytorch·笔记·学习
小陈phd14 小时前
多模态大模型学习笔记(三十一)—— 基于CCT(Compact Convolutional Transformers)实现中文车牌数据集微调
笔记·学习