Broker |
Kafka集群通常由多个代理组成,以保持负载平衡。 Kafka代理是无状态的,因此他们使用ZooKeeper来维护其集群状态。一个Kafka代理实例每秒可以处理数十万次读写,每个代理可以处理TB级别的消息而不会影响性能。Kafka Broker Leader的选举可以由ZooKeeper完成。 |
ZooKeeper |
ZooKeeper用于管理和协调Kafka Broker(代理)。 ZooKeeper服务主要用于通知生产者和消费者有关Kafka系统中任何新代理的存在或Kafka系统中代理的故障。根据Zookeeper收到的Broker(代理)存在或失败的通知,生产者和消费者将做出决定并开始与其他代理(Broker)协调其任务。 |
producers |
生产者将数据推送给代理(Broker)。启动新代理后,所有生产者都会对其进行搜索并自动向该新代理发送消息。 Kafka生产者不等待代理(Broker)的确认,而是以代理(Broker)可以处理的最快速度发送消息。 |
consumers |
由于Kafka代理是无状态的,这意味着使用者必须使用分区偏移量来维护消耗了多少消息。如果使用者确认特定的消息偏移量,则表示该使用者已经使用了所有先前的消息。使用者向代理发出异步拉取请求,以准备使用字节缓冲区。使用者只需提供偏移值即可倒退或跳到分区中的任何点。消费者补偿值由ZooKeeper通知。 |