我是Kafka的新人,我想问一个问题。
如果有3个kafka代理(kafka1,kafka2,kafka3)(它们在同一个kafka集群中)和topic=test(replication=2),则kafka1有leader分区,kafka2有follower分区。
如果生产者将数据发送到kafka3,那么如何将数据存储在kafka1和kafka2中?
我听说,如果producer向kafka3发送数据,那么zookeeper会找到拥有leader分区的代理,并返回代理的dns或ip地址。然后,producer将元数据重新发送给代理。
对吗?如果是错的,请告诉我它是怎么工作的。
谢谢!
1条答案
按热度按时间aelbi1ox1#
每个Kafka主题分区都有自己的领导人。所以如果你有两个分区,Kafka会为每个分区指定一个引线。它们最终可能是相同的Kafka节点,也可能是不同的节点。
当producer连接到kafka集群时,它就可以了解分区领导者。所有写入都必须经过相应的分区领导,该领导负责跟踪同步副本。
所有使用者只与相应的分区负责人交谈以获取数据。
如果分区leader关闭,其中一个副本将成为leader,并将此更改通知所有生产者和消费者