说,我有一个带有10个分区的kafka主题。当数据速率增加时,我可以增加分区以加快处理逻辑。
但是我的疑问是,增加分区是否好还是我可以进行主题拆分(即,根据我的应用程序逻辑,某些数据将用于主题1,而某些数据将用于主题2。因此,这样做,我可以将数据速率分为两个主题)
选择新主题而不是增加分区还是增加分区而不是创建新主题都会对kafka集群产生任何性能影响?
哪个是最好的解决方案?
答案 0 :(得分:2)
要视情况而定!
通常建议对可能会增加吞吐量的主题进行过度分区,以免发生这种情况时不必添加分区。
主要原因是,如果您使用的是键控消息,则添加分区将更改键-分区映射。因此,添加分区后,带有密钥的邮件将不会进入以前的分区。如果您需要按键订购,则可能会出现问题。
添加分区通常比较容易,因为消费者和生产者不需要更新。您将能够添加消费者以扩大规模。您还需要将所有事件放在一起,并且不必担心一个主题。根据群集的大小,只有10个分区,您可能还有很多余地来添加分区。从Kafka的角度来看,10个分区非常小,您可以轻松拥有50个甚至更多分区。
另一方面,在创建新主题时,需要更新客户端以使用它们。尽管如此,如果随着时间的流逝您开始接收更多类型的事件并希望在多个主题之间对它们进行重新排序,那将是一个解决方案。