Kafka集群
Kafka集群:是由多个Kafka服务器节点(称为Broker)组成的分布式消息系统集群。
它通过分布式架构实现高吞吐量、可扩展性和高可用性,主要用于处理实时数据流和日志收集等场景。
Kafka的消息以主题(Topic)分类存储,每个主题下包含一个或多个分区(Partition),分区是消息的物理存储单元。
每个分区可以有多个副本(Replication),分布在不同Broker上,以保证数据的可靠性和容错能力。
Kafka集群架构
Kafka集群架构,如下图所示:
+-----------------+ +-----------------+ +-----------------+ | Producer(s) |------>| Broker 1 |------>| Broker 2 |------> ... +-----------------+ | (Leader for P1) | | (Follower for P1,| | (Follower for P2)| | Leader for P2) | +-----------------+ +-----------------+ ^ ^ | | +-----------------+ +-----------------+ +-----------------+ | Consumer(s) |<------| Broker 1 |<------| Broker 2 |<------ ... | (in Consumer | +-----------------+ +-----------------+ | Group) | +-----------------+ +-----------------+ | Zookeeper | (传统模式) +-----------------+ +-----------------+ | Controller | (KRaft 模式) +-----------------+
主要包括以下几个核心组成部分:
1. 生产者(Producer)
将消息发送到 Kafka 中的指定 Topic、 和 Partition。
生产者可以根据配置的分区策略(例如,轮询、Key 哈希等),将消息发送到 Topic 的特定 Partition。
生产者通过连接到集群中的任何一个 Broker 来发现整个集群的元数据(Topic、Partition、Leader 等信息)。
Broker 会告知生产者目标 Partition 的 Leader 所在的 Broker。
2. 消费者(Consumer)
消费者通过 Consumer Group 的方式订阅一个、或多个 Topic。
Consumer Group 中的多个 Consumer 实例共同消费订阅的 Topic 的 Partition。
Kafka 保证每个 Partition 只能被同一个 Consumer Group 中的一个 Consumer 实例消费,从而保证了 Partition 内消息的消费顺序。
3. Broker
Kafka 的运行实例,一个集群包含多个 Broker。
每个 Broker 负责接收消息、保存日志文件、服务 Consumer。
Topic 的分区(Partition)分布在不同 Broker 上。
支持副本机制,Partition 有多个副本(Replica),实现高可用。
每个Kafka Broker都是独立的服务进程,主要承担以下职责:
- 消息持久化存储;
- 处理生产者和消费者的请求;
- 参与副本复制和Leader选举;
- 执行日志压缩和清理策略。
4.Zookeeper (在传统模式下)
用于存储 Kafka 集群的元数据信息,例如 Broker 的注册、Topic 和 Partition 的信息、Leader 的选举等。
5.Controller (在 KRaft 模式下)
Kafka Broker 节点之一,负责集群的元数据管理和协调,取代了 Zookeeper 的部分功能。
Kafka 集群的架构设计围绕着分布式、分区、副本这三个核心概念展开。
通过将 Topic 分区并分布在多个 Broker 上,实现了高吞吐量和水平扩展能力。
通过副本机制和 Leader-Follower 模型,保证了数据的可靠性和高可用性。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!

后台回复【架构】即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》