1 Kafka 是什么?
Kafka是一个 分布式流处理平台,主要用于 高吞吐量、低延迟的实时数据流处理,最初由LinkedIn开发。核心特点:
- 高吞吐量:支持每秒百万级消息处理
- 持久化存储:消息可持久化到磁盘,避免丢失
- 分布式架构:支持水平扩展,保障高可用性
- 实时流处理:可与 Flink、Spark Streaming 等流处理框架集成
应用场景:
- 日志收集与分析(如ELK替代方案)
- 实时事件处理(如用户行为跟踪)
- 消息队列(解耦生产者和消费者)
2 Kafka核心组件解析
2.1 Producer(生产者)
作用:向Kafka Topic发送消息特点:
- 支持异步/同步发送
- 可自定义分区策略(如轮询、Key-based 分区)
2.2 Consumer(消费者)
作用:从 Topic 订阅并消费消息特点:
- 支持消费者组(Consumer Group)实现负载均衡
- 可手动提交偏移量(offset)控制消费进度
2.3 Broker(代理节点)
作用:Kafka集群中的单个服务器,负责存储和转发消息特点:
- 每个Broker管理多个Partition(分区)
# 查看Broker信息,列出所有Broker
kafka-broker-api-versions --bootstrap-server localhost:9092
2.4 Topic(主题)
作用:消息的逻辑分类,类似数据库的表特点:
- 每个Topic可划分为多个Partition(提高并发)
- 消息在Partition内有序存储
# 创建Topic
kafka-topics --create \
--bootstrap-server localhost:9092 \
--topic test_topic \
--partitions 3 \
--replication-factor 2
# 验证Topic详情
kafka-topics --describe \
--bootstrap-server localhost:9092 \
--topic test_topic
2.5 Partition(分区)
作用:Topic的物理分片,保障并行处理能力特点:
- 每个 Partition 是一个有序、不可变的日志队列
- 消费者按 Partition 分配消费任务
# 查看Topic分区信息
kafka-topics --describe \
--bootstrap-server localhost:9092 \
--topic test_topic
3 Kafka vs 消息队列
3.1 传统消息队列(如RabbitMQ)
特性 | RabbitMQ | Kafka |
设计目标 | 低延迟、高可靠的消息投递 | 高吞吐、持久化的大规模流处理 |
消息模型 | 队列(Queue)、发布/订(Exchange) | 分区(Partition)+ 消费者组 |
消息存储 | 消费后默认删除(可持久化) | 长期存储(可配置保留时间) |
吞吐量 | 较低(万级/秒) | 极高(百万级/秒) |
适用场景 | 任务队列、RPC 通信 | 日志收集、实时数据分析、事件溯源 |
3.2 Kafka的核心优势
- 高吞吐:适合大数据场景(如日志采集)
- 持久化存储:消息可回溯,避免丢失
- 水平扩展:通过增加Broker轻松扩容
4 总结
- Kafka是分布式流处理平台,核心解决高吞吐实时数据流问题
- 核心组件:Producer、Consumer、Broker、Topic、Partition
- Kafka和传统消息队列:Kafka适合大数据场景,RabbitMQ适合任务调度