Kafka的核心组件主要包括以下几个:
-
Broker:
- Kafka集群由多个Broker组成,每个Broker是一个独立的Kafka服务器实例。
- Broker负责维护数据,并处理生产者的数据推送和消费者的数据拉取请求。
-
Topic:
- Topic是Kafka中消息的分类,生产者将消息发送到特定的Topic,消费者从Topic中读取消息。
- 每个Topic可以进一步划分为多个Partition,以支持并行处理。
-
Partition:
- Partition是Topic的子集,每个Partition在物理上对应一个日志文件,消息在写入时会被追加到日志文件的末尾。
- Partition允许Topic跨多个Broker进行扩展,并支持并行处理消息。
-
Replica:
- 为了提供高可用性,Kafka中的每个Partition都有多个副本,称为Replicas。
- 其中一个Replica被选举为Leader,其他为Followers。
- Leader处理所有的读写请求,Followers从Leader复制数据。
-
Producer:
- 生产者是向Kafka集群发送消息的客户端应用程序。
- 生产者可以将消息发送到特定的Topic和Partition。
-
Consumer:
- 消费者是读取Kafka中消息的客户端应用程序。
- 消费者通常以组(Group)的形式存在,每个消费者组可以有一个或多个消费者。
-
Consumer Group:
- 消费者组是一组消费者实例的集合,它们共享订阅的主题,但每个消费者实例会消费不同Partition的消息。
-
Controller:
- Controller是Kafka集群中的一个特殊Broker,负责管理分区和副本的状态。
- 当Leader副本宕机时,Controller负责选举新的Leader。
这些组件是Kafka架构中最为关键的部分,它们共同工作以提供高吞吐量、可扩展性和容错性。