跳转至

Kafka 整体架构


Kafka 整体架构图

flowchart TD
    subgraph Client_Apps [Java 生产者服务]
        P_App[Producer App Instance]
        P_App --> P0[Producer Thread 0]
        P_App --> P1[Producer Thread 1]
    end

    subgraph Kafka_Cluster [Kafka Cluster - 副本因子: 2]
        direction TB
        subgraph Broker_0 [Broker 0]
            T1P0L["Topic-A P0 (Leader)"]
            T1P2F["Topic-A P2 (Follower)"]
        end
        subgraph Broker_1 [Broker 1]
            T1P1L["Topic-A P1 (Leader)"]
            T1P0F["Topic-A P0 (Follower)"]
        end
        subgraph Broker_2 [Broker 2]
            T1P2L["Topic-A P2 (Leader)"]
            T1P1F["Topic-A P1 (Follower)"]
        end
    end

    subgraph External [集群协调]
        ZK((ZooKeeper / KRaft))
    end

    subgraph Consumer_Group_G0 [Java 消费者服务组 - Group G0]
        direction TB
        subgraph Service_Instance_0 [Service Instance 0]
            C0[Consumer Thread 0]
        end
        subgraph Service_Instance_1 [Service Instance 1]
            C1[Consumer Thread 1]
            C2[Consumer Thread 2]
        end
    end

    %% 生产者流向
    P0 -->|Key: User_A| T1P0L
    P1 -->|Key: User_B| T1P1L

    %% 副本同步 (ISR 机制)
    T1P0L -.->|Sync| T1P0F
    T1P1L -.->|Sync| T1P1F
    T1P2L -.->|Sync| T1P2F

    %% 消费者拉取 (Fetch)
    T1P0L ===>|Fetch| C0
    T1P1L ===>|Fetch| C1
    T1P2L ===>|Fetch| C2

    %% 协调关系
    ZK --- Broker_0
    ZK --- Broker_1
    ZK --- Broker_2

注意:Kafka 2.8+ 引入 KRaft 模式,用内置的 Raft 协议替代 ZooKeeper,Kafka 3.x 已完全支持无 ZooKeeper 部署。


架构核心要点

组件 职责 说明
Producer 消息生产者 将消息写入指定 Topic 的 Partition
Broker Kafka 服务节点 存储分区数据,处理读写请求
Topic 消息主题 消息的逻辑分类,由多个 Partition 组成
Partition 分区 Topic 的物理分片,是并行度的基本单位
Leader/Follower 主副本/从副本 Leader 处理读写,Follower 同步数据
Consumer Group 消费者组 组内消费者共同消费 Topic,每个分区只被一个消费者消费
ZooKeeper/KRaft 元数据管理 存储集群元数据,负责 Controller 选举

数据流向

Producer → Broker(Leader Partition) → Follower Partition(副本同步)
                              Consumer(拉取消费)
  • 写入:Producer 只写 Leader Partition,Follower 异步同步
  • 消费:Consumer 从 Leader Partition 拉取数据(Pull 模式)
  • 副本:Follower 持续从 Leader 同步,保证高可用