kafka核心组件
Kafka的核心组件主要包括以下几个,它们相互协作实现消息的高效处理:
1. 生产者(Producer)
- 负责将消息发送到Kafka集群,可指定消息的主题(Topic)和分区(Partition)。
- 支持批量发送和异步发送,提升发送效率。
2. 消费者(Consumer)
- 从Kafka集群订阅主题并拉取消息,通过消费者组(Consumer Group)实现多实例负载均衡。
- 消费者维护偏移量(Offset)记录已消费的位置,确保消息不重复消费。
3. 主题(Topic)
- 逻辑上的消息分类,每条消息都属于一个主题,类似RabbitMQ中的队列,但更侧重于数据流向的分类。
4. 分区(Partition)
- 主题的物理分片,每个主题包含多个分区,数据按分区分布式存储。
- 分区是Kafka实现并行处理和容错的基础,每个分区可分配多个副本(Replica)。
5. 代理(Broker)
- Kafka集群中的节点,负责存储消息、处理生产者和消费者的请求。
- 每个分区有一个主副本(Leader)和多个从副本(Follower),主副本处理读写请求,从副本同步数据实现高可用。
6. Zookeeper(旧版依赖)
- 早期Kafka依赖Zookeeper管理集群元数据(如Broker节点、分区状态等),新版Kafka已逐步移除对Zookeeper的依赖,改用自研的KRaft协议。
7. 控制器(Controller)
- 由某个Broker节点担任,负责管理集群中的分区和副本状态,如选举主副本、分配分区到Broker等。
这些组件通过分布式架构和分区机制,使Kafka具备高吞吐量、可扩展性和容错性,适用于日志收集、实时数据处理等场景。