Apache Kafka 集群架构
请看下图。它展示了Kafka的集群架构图。
下面描述了上图中显示的每个组件。
经纪人(Broker)
Kafka集群通常由多个Broker组成,以保持负载平衡。Broker是无状态的,所以他们使用ZooKeeper来维护他们的集群状态。一个Kafka Broker实例每秒可以处理数十万次读写,每个Broker可以处理1tb的消息,而不会影响性能。Kafka Broker领导的选举可以由ZooKeeper来完成。
ZooKeeper
ZooKeeper用于管理和协调Broker。ZooKeeper服务主要用于通知生产者和消费者系统中存在任何新Broker或者Kafka系统中Broker出现故障。根据ZooKeeper收到的关于Broker是否存在的通知,生产者和消费者做出决定,并开始与其他Broker协调他们的任务。
生产者(Producer)
生产者将数据推给Broker。当新Broker启动时,所有的生产者都会搜索它,并自动向新Broker发送消息。 Kafka 生产者不会等待Broker的确认,而是以Broker能够处理的速度发送消息。
消费者(Consumer)
因为Kafka Broker是无状态的,这意味着消费者必须通过使用分区偏移量来维护已经消费了多少消息。如果消费者确认了特定的消息偏移,这意味着消费者已经消费了所有先前的消息。消费者向Broker发出异步拉请求,以准备好一个字节缓冲区供消费者使用。消费者可以简单地通过提供偏移值倒带或跳到分区中的任何一点。消费者补偿值由ZooKeeper通知。