Kafka - 新主题或增加分区数

Hem*_*ath 1 apache-kafka

说,我有一个有 10 个分区的 kafka 主题。当数据速率增加时,我可以增加分区以加快处理逻辑。

但我的疑问是,增加分区是好还是我可以去主题拆分(也就是说,根据我的应用程序逻辑,一些数据会去主题1,一些数据会去主题2。所以通过这样做,我可以将数据速率拆分为两个主题)

选择新主题而不是增加分区或增加分区而不是创建新主题是否会对kafka集群的性能产生影响?

哪一个将是最好的解决方案?

Mic*_*son 6

这取决于!

通常建议对可能会增加吞吐量的主题稍微过度分区,这样您就不必在发生这种情况时添加分区。

主要原因是,如果您使用键控消息,添加分区将更改键-分区映射。因此,在添加分区之后,带有键的消息将不会像以前那样进入同一个分区。如果您需要按键订购,这可能会有问题。

添加分区通常更容易,因为消费者和生产者不需要更新。您将能够将消费者添加到规模。您还将所有事件放在一起,而不必担心单个主题。根据集群的大小,只有 10 个分区,您可能仍有很大的余地来添加分区。从 Kafka 的角度来看,10 个分区非常小,您可以轻松拥有 50 个甚至更多。

另一方面,在创建新主题时,客户端需要更新才能使用它们。尽管如此,如果随着时间的推移您开始接收更多类型的事件并希望跨多个主题对它们重新排序,这可能是一个解决方案。