Kafka集群架构详解(图文全面总结)

Kafka集群

Kafka集群:是由多个Kafka服务器节点(称为Broker)组成的分布式消息系统集群。

Kafka集群架构详解(图文全面总结)-mikechen

它通过分布式架构实现高吞吐量、可扩展性和高可用性,主要用于处理实时数据流和日志收集等场景。

Kafka的消息以主题(Topic)分类存储,每个主题下包含一个或多个分区(Partition),分区是消息的物理存储单元。

每个分区可以有多个副本(Replication),分布在不同Broker上,以保证数据的可靠性和容错能力。

 

Kafka集群架构

Kafka集群架构,如下图所示:

Kafka集群架构详解(图文全面总结)-mikechen

+-----------------+       +-----------------+       +-----------------+
|   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。

Kafka集群架构详解(图文全面总结)-mikechen

Consumer Group 中的多个 Consumer 实例共同消费订阅的 Topic 的 Partition。

Kafka 保证每个 Partition 只能被同一个 Consumer Group 中的一个 Consumer 实例消费,从而保证了 Partition 内消息的消费顺序。

 

3. Broker

Kafka 的运行实例,一个集群包含多个 Broker。

Kafka集群架构详解(图文全面总结)-mikechen

每个 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面试题总结

评论交流
    说说你的看法