例如,我有3个Kafka经纪人和一个有3个副本的分区。我们假设3个副本均匀分布在每个代理上。 那么如果一个副本(追随者)失败,Kafka会怎么做? Kafka会创建一个新的副本,还是等待失败的副本回来?
此时,如果生产者继续向经纪人写入数据,会导致数据丢失吗?
答案 0 :(得分:1)
那么,如果一个副本(追随者)失败,Kafka会怎么做? Kafka会创建一个新的副本,还是等待失败的副本回来?
它会等待一些经纪人回来,无论是原来丢失的还是其中一个。
此时,如果生产者继续向经纪人写入数据,会导致数据丢失吗?
不,复制不会拆分数据,而是在群集中复制数据。所以,只要有一个经纪人,那么你应该没问题。
请注意,您似乎在考虑分区,这是一种将数据拆分以实现可伸缩性的方法。复制是关于冗余的。最后要注意的是,如果您将Producer acks
设置为all
,那么它将需要完全复制,否则它将不接受任何消息。将min.insync.replicas
设置为代理上的更高值时也可能发生这种情况。
TL; DR;使用默认设置,只要您至少有一台服务器正在运行,就应该没有问题。