一、 五大核心组件
1、Broker(服务节点)
Kafka 的服务节点,一个 Kafka 集群由多个 Broker 组成。
大白话:一台 Kafka 服务器就是一个 Broker。
2、Topic(主题)
数据的分类通道,相当于数据文件夹/数据表。
-
不同业务数据放不同 Topic
-
例如:vehicle_data(车联网数据)、order_log(订单数据)
核心:Flink 消费数据,本质就是消费某个 Topic 的数据。
3、Partition(分区)------ 重中之重
Topic 是逻辑概念,分区是物理存储单元。
-
一个 Topic 可以分为多个分区
-
数据均匀分散在不同分区存储
-
分区数决定 Kafka 最大并发消费能力
生产铁律:Flink 并行度 ≤ Kafka 分区数,否则消费能力无法拉满。
4、Replica(副本)
分区的备份数据,用于高可用、防止数据丢失。
-
Leader 副本:负责读写数据
-
Follower 副本:只同步备份,故障时顶替 Leader
5、Offset(偏移量)------ 最核心
分区内每条消息的唯一序号,相当于数据的"读取游标"。
-
消费者根据 Offset 记录读到哪了
-
重启任务不会重头读,从上次 Offset 继续消费
-
Flink Checkpoint 本质就是保存 Offset 状态
二、 生产者 & 消费者 & 消费者组
1、生产者 Producer
负责向 Kafka Topic 发送数据的程序/服务。
示例:车联网设备、业务服务、日志采集程序。
2、消费者 Consumer
负责从 Kafka Topic 读取数据的程序。
示例:Flink 任务、数据同步服务、消息推送服务。
3、消费者组 Group ID(企业核心)
多个消费者归为一个组,组内核心规则:
-
同一个组内,一条数据只会被消费一次(保证不重复消费)
-
不同组之间互不影响,可以重复消费同一份数据
场景举例:
-
Flink 实时计算用一个组
-
日志备份消费用另一个组
-
两份任务独立消费,互不干扰
三、数据存储与消费机制
1、数据存储规则
-
Kafka 数据持久化落盘,不是读完就丢
-
默认保留一段时间(通常 7天),过期自动清理
-
数据有序:同一分区内数据有序,跨分区无序
2、 消费起始位置(Flink 高频使用)
-
earliest:从 Topic 最开始第一条数据从头消费(测试用)
-
latest:从当前最新数据开始消费(生产默认)
3、Offset 提交机制(生产重点)
-
自动提交:简单但容易丢数据、重复数据(生产禁用)
-
手动提交:消费成功再提交,Flink Checkpoint 就是手动精准提交
生产标准:关闭 Kafka 自动提交,依赖 Flink 精准 Offset 管理