醋醋百科网

Good Luck To You!

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

关注mikechen十余年BAT架构经验倾囊相授!

大家好,我是mikechen。


Kafka是大型架构的必备中间件,下面我重点来详解Kafka集群架构@mikechen

文章来源:mikechen.cc


Kafka集群

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

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

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

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


Kafka集群架构

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

+-----------------++-----------------++-----------------+|Producer(s)|------>|Broker1|------>|Broker2|------>...+-----------------+|(Leaderfor P1)||(Followerfor P1,||(Followerfor P2)||Leaderfor P2)|+-----------------++-----------------+^^||+-----------------++-----------------++-----------------+|Consumer(s)|<------|Broker1|<------|Broker2|<------...|(inConsumer|+-----------------++-----------------+|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原创超30万字《阿里架构师进阶专题合集》里面。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言