在Kafka中,是否在主题的所有分区中复制了每条消息?

时间:2017-06-27 18:36:49

标签: apache-kafka

如果主题有4个分区,并且发布者向主题发送消息,那么是否会在所有四个分区中复制相同的消息,还是只复制一个?

2 个答案:

答案 0 :(得分:10)

分区和复制是两回事。

分区是为了扩展性。主题在分布在不同代理上的一个或多个分区中进行分区,以便更多的消费者可以连接到这些代理,以便接收发送到同一主题但来自不同分区的消息。增加分区可以提高可伸缩性,并且可以让更多的消费者从同一主题获取消息。回答你的问题,发送给主题的每条消息只进入一个分区(主题本身)。

复制是为了容错。您可以在主题创建时指定复制因子,这意味着该主题的每个分区都会在不同的代理上复制多次。一个副本是"领导者"生产者发送和消费者获取消息;其他副本是"追随者"其中包含来自"领导者"的消息副本。复制品。如果经纪人处理"领导"复制品下降,其中一个"追随者"成为领导者。

答案 1 :(得分:2)

跨分区不会发生复制。无论主题有多少分区,每条消息都会进入主题的单个分区。

如果已将主题的复制因子设置为大于1的数字(假设您在群集中运行了多个代理),则会在这些代理之间复制主题的每个分区。