Kafka架构与核心概念
请介绍Kafka的整体架构,包括Broker、Topic、Partition、Consumer Group等核心概念及其关系。
回答
小字辈
Kafka核心架构组件:
1. Producer(生产者):
- 向Topic发布消息
- 支持同步/异步发送、批量发送、压缩
- 可自定义分区器(Partitioner)
2. Broker(服务器节点):
- 每个Kafka服务器称为一个Broker
- 集群由多个Broker组成(推荐3台以上)
- 负责消息存储、副本管理、处理读写请求
- 每个Broker有一个唯一ID
3. Topic(主题):
- 消息的逻辑分类
- 一个Topic包含多个Partition
- Producer将消息发送到指定Topic
4. Partition(分区):
- Topic的水平分片,每个分区是一个有序的、不可变的消息序列
- 每个分区有唯一的Offset(偏移量)标识消息位置
- 分区数决定了Topic的最大并行度
- 分区数在创建Topic时指定,可增加(不可减少)
5. Replica(副本):
- 每个分区有多个副本(Leader + Follower)
- Leader处理读写,Follower同步
- 副本数不能超过Broker数
6. Consumer(消费者):
- 从Partition拉取消息
- 维护自己的Offset
7. Consumer Group(消费组):
- 多个Consumer组成一个组
- 组内每个Consumer消费不同Partition(负载均衡)
- 一个Partition只能被同一组内的一个Consumer消费
- 不同Consumer Group独立消费(广播模式)
数据流示例:
Producer → Topic[Order] → Partition-0[Broker1] → ConsumerA(Group1)
→ Partition-1[Broker2] → ConsumerB(Group1)
→ Partition-2[Broker3] → ConsumerC(Group1)
→ ConsumerD(Group2)
Offset管理:
- 旧版:存储在ZooKeeper
- 新版(0.9+):存储在内部Topic
__consumer_offsets