我们可以为kafka主题指定自定义分区程序。因此,kafka生产者可以根据某些自定义算法确定地将消息发送到特定分区。
现在的问题是,当我增加分区数量时,kafka将如何在新分区之间重新分配现有消息?还是Kafka不会将消息分发到新分区? 是否可以触发此重新分配?如果是这样,那么当那段代码驻留在生产者部分中时,kafka将如何了解自定义分区?
答案 0 :(得分:1)
当我增加分区数量时,kafka将如何在新分区之间重新分配现有消息?
它不会重新分发现有消息。
是否可以触发此重新分配?
我什么都不知道。请记住,将消息放入特定的分区将确保这些消息在分区中的顺序。因为这可能是您应用程序中必不可少的要求,所以随机整理现有分区中的消息将非常危险。
如果是这样,那么当那段代码驻留在生产者部分中时,kafka将如何了解自定义分区?
确实,Kafka甚至不知道如何平衡新旧分区之间的现有消息。只能在随机的基础上完成,这对于消息排序非常危险(请参阅第二个问题的答案)。
我们可以为kafka主题指定自定义分区程序。
仅想强调一点,自定义分区总是在生产者级别使用,而您不能为主题指定分区。想象一下一个有效的场景,其中有多个制作人都在写同一个主题。每个生产者可以有一个单独的分区逻辑。