2017-06-29 52 views
0

据我所知,如果我在我的主题之一使用键控消息,卡夫卡分区将始终发送具有相同键的消息到相同的分区,这将确保该特定的一组消息。消息到分区分配,排序和分区号调整大小

此外,默认分区程序最初将根据可用于该特定主题的分区数来决定发送消息的分区。就像messageKeyHash%numberOfPartitions一样。

我的问题是,如果我有咱们5个分区一个主题,发送3消息是有密钥A,他们都分配给分区0,后来我增加对于该主题的分区数量从5到5 + x,是否kafka“记住”带密钥A的消息应该分配给分区0,或者分区器可以使用密钥A将消息发送到另一个分区?

换句话说:如果增加主题的分区数,在运行时,我会失去该主题中特定键的排序保证吗?

如果是,我该如何解决这个问题?如果我需要订购保证,应该总是过度分割?我应该实现一个定制的分区(我不明白)?

谢谢

回答

3

是如果增加分区的数量,你会失去这样的保证,因为有一个关键的信息可以去不同的分区,而不是分区0了。 通常,当您要创建主题时,过度分区或者至少知道最佳分区数是一件好事。