kafka自定义分区程序和重新分区

时间:2020-09-15 09:21:30

标签: apache-kafka partitioning kafka-topic

我们可以为kafka主题指定自定义分区程序。因此,kafka生产者可以根据某些自定义算法确定地将消息发送到特定分区。

现在的问题是,当我增加分区数量时,kafka将如何在新分区之间重新分配现有消息?还是Kafka不会将消息分发到新分区? 是否可以触发此重新分配?如果是这样,那么当那段代码驻留在生产者部分中时,kafka将如何了解自定义分区?

1 个答案:

答案 0 :(得分:1)

当我增加分区数量时,kafka将如何在新分区之间重新分配现有消息?

它不会重新分发现有消息。

是否可以触发此重新分配?

我什么都不知道。请记住,将消息放入特定的分区将确保这些消息在分区中的顺序。因为这可能是您应用程序中必不可少的要求,所以随机整理现有分区中的消息将非常危险。

如果是这样,那么当那段代码驻留在生产者部分中时,kafka将如何了解自定义分区?

确实,Kafka甚至不知道如何平衡新旧分区之间的现有消息。只能在随机的基础上完成,这对于消息排序非常危险(请参阅第二个问题的答案)。


我们可以为kafka主题指定自定义分区程序。

仅想强调一点,自定义分区总是在生产者级别使用,而您不能为主题指定分区。想象一下一个有效的场景,其中有多个制作人都在写同一个主题。每个生产者可以有一个单独的分区逻辑。