「阅读笔记」Kafka 是什么?

42 阅读2分钟

原文链接:mp.weixin.qq.com/s/SNMmCMV-g…

本质上还是各个消费组各干各的,互不影响;同一个组里按 partition 分活。

架构


    Key Components: 
    ═══════════════════════════════════════════════════════════════════ 
    • Broker: 存储和转发消息的服务节点 
    • Topic: 消息主题,逻辑上的消息分类 
    • Partition: 主题的物理分片,支持并行处理 
    • Producer: 消息生产者,向Kafka发送消息 
    • Consumer: 消息消费者,从Kafka读取消息 
    • Consumer Group: 消费者组,实现负载均衡 
    • ZooKeeper: 协调服务,管理集群元数据 
    • Leader/Follower: 分区副本角色,保证高可用
    
    
    Key Points:
    ═══════════════════════════════════════════════════════════════════
    • Leader均匀分布:每个Broker都承担部分PartitionLeader角色
    • 负载均衡:避免单个Broker承担过多Leader压力
    • 高可用:每个Partition都有多个副本分布在不同Broker
    • 故障转移:Leader故障时,Follower可以接管
    

                    Kafka Cluster Architecture
    ┌─────────────────────────────────────────────────────────────────┐
    │                        Kafka Cluster                            │
    │                                                                 │
    │  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐          │
    │  │   Broker-1  │    │   Broker-2  │    │   Broker-3  │          │
    │  │             │    │             │    │             │          │
    │  │ Topic-A-P0  │    │ Topic-A-P1  │    │ Topic-A-P2  │          │
    │  │ (Leader)    │    │ (Leader)    │    │ (Leader)    │          │
    │  │             │    │             │    │             │          │
    │  │ Topic-B-P1  │    │ Topic-B-P2  │    │ Topic-B-P0  │          │
    │  │ (Follower)  │    │ (Follower)  │    │ (Leader)    │          │
    │  │             │    │             │    │             │          │
    │  │ Topic-A-P1  │    │ Topic-A-P2  │    │ Topic-A-P0  │         │
    │  │ (Follower)  │    │ (Follower)  │    │ (Follower)  │         │
    │  │             │    │             │    │             │         │
    │  │ Topic-B-P2  │    │ Topic-B-P0  │    │ Topic-B-P1  │         │
    │  │ (Follower)  │    │ (Follower)  │    │ (Leader)    │         │
    │  └─────────────┘    └─────────────┘    └─────────────┘         │
    │         │                   │                   │              │
    └─────────┼───────────────────┼───────────────────┼──────────────┘
              │                   │                   │
              └───────────────────┼───────────────────┘
                                  │
    ┌─────────────────────────────┼─────────────────────────────┐
    │                    ZooKeeper Ensemble                     │
    │                             │                             │
    │    ┌─────────┐    ┌─────────┐    ┌─────────┐            │
    │    │   ZK-1  │────│   ZK-2  │────│   ZK-3  │            │
    │    │         │    │         │    │         │            │
    │    └─────────┘    └─────────┘    └─────────┘            │
    └─────────────────────────────────────────────────────────┘
    
    
    Producers                                      Consumer Groups
    ┌─────────────┐                              ┌─────────────────┐
    │ Producer-1  │                              │ Consumer Group-1│
    │             │                              │                 │
    │ ┌─────────┐ │    ──────────────────────▶   │ ┌─────────────┐ │
    │ │ App-A   │ │                              │ │ Consumer-1  │ │
    │ └─────────┘ │                              │ └─────────────┘ │
    └─────────────┘                              │                 │
            │                                    │ ┌─────────────┐ │
            │                                    │ │ Consumer-2  │ │
            ▼                                    │ └─────────────┘ │
    ┌─────────────┐                              └─────────────────┘
    │ Producer-2  │                                       │
    │             │                                       │
    │ ┌─────────┐ │    ──────────────────────▶            ▼
    │ │ App-B   │ │                              ┌─────────────────┐
    │ └─────────┘ │                              │ Consumer Group-2│
    └─────────────┘                              │                 │
                                                 │ ┌─────────────┐ │
                                                 │ │ Consumer-3  │ │
                                                 │ └─────────────┘ │
                                                 └─────────────────┘

    Leader Distribution (正确的分布):
    ═══════════════════════════════════════════════════════════════════
    
    Broker-1:  Topic-A-P0 (Leader)   Topic-B-P1 (Follower)
    Broker-2:  Topic-A-P1 (Leader)   Topic-B-P2 (Follower)  
    Broker-3:  Topic-A-P2 (Leader)   Topic-B-P0 (Leader)
    
    Broker-1:  Topic-A-P1 (Follower) Topic-B-P2 (Follower)
    Broker-2:  Topic-A-P2 (Follower) Topic-B-P0 (Follower)
    Broker-3:  Topic-A-P0 (Follower) Topic-B-P1 (Leader)

    Data Flow:
    ═══════════════════════════════════════════════════════════════════
    
    1. ProducerBroker (Write to Leaders)
       Producer-1 ──────▶ Topic-A-P0 (Broker-1), Topic-A-P1 (Broker-2), Topic-A-P2 (Broker-3)
       Producer-2 ──────▶ Topic-B-P0 (Broker-3), Topic-B-P1 (Broker-3), Topic-B-P2 (Broker-2)
    
    2. Replication (LeaderFollowers)
       Topic-A-P0 (Broker-1) ┄┄┄▶ Topic-A-P0 (Broker-3)
       Topic-A-P1 (Broker-2) ┄┄┄▶ Topic-A-P1 (Broker-1)
       Topic-A-P2 (Broker-3) ┄┄┄▶ Topic-A-P2 (Broker-2)
       Topic-B-P0 (Broker-3) ┄┄┄▶ Topic-B-P0 (Broker-2)
       Topic-B-P1 (Broker-3) ┄┄┄▶ Topic-B-P1 (Broker-1)
       Topic-B-P2 (Broker-2) ┄┄┄▶ Topic-B-P2 (Broker-1)
    
    3. ConsumerBroker (Read from Leaders)
       Consumer-1 ◀────── Topic-A-P0 (Broker-1), Topic-A-P1 (Broker-2)
       Consumer-2 ◀────── Topic-A-P2 (Broker-3)
       Consumer-3 ◀────── Topic-B-P0 (Broker-3), Topic-B-P1 (Broker-3), Topic-B-P2 (Broker-2)


高性能

image.png

高扩展

image.png

高可用

image.png

持久化

image.png

消费组

image.png