Kafka主题数vs分区数

smtd7mpg  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(366)

请容忍我。我对Kafka很陌生。我正在做一个项目,生产者可以在运行时出现(不是一个固定的数字)并发布消息。目前,它们发布到kafka broker运行时创建的唯一主题(topic.uuid),另一端有一个使用者订阅topic.*模式并订阅所有主题,并且在新主题出现时重新平衡。这是正确的方法吗?
现在,我很困惑,我们应该有一个主题和多个分区,还是有多个主题和一个分区。
但是,为每个分区(在运行时)获取新分区和新使用者以获得更高的吞吐量所涉及的复杂性是什么?正如在各种博客中提到的,分区的数量在一个组中应该具有相同的使用者数量。

b09cbbtk

b09cbbtk1#

主题应该从功能的Angular 来看待。您可以有多个主题,每个主题对应一系列特定的消息。
例如,您可以有一个解析重要消息的主题和另一个使用日志压缩进行大容量加载/备份的主题,以获得更细粒度的每记录保留策略。
从技术/架构的Angular 来看,分区很有趣。Kafka是一个分布式系统。一个主题可以有多个分区。当您有多个kafka代理时,每个代理将获得一组分配给它们负责的分区。
例如,如果一个主题有24个分区,并且生成了3个kafka代理,那么每个代理将负责8个分区。kafka和zookeeper将负责这些分区的负载分布,并在代理崩溃时正确地重新分配分区。
使用者可以从这些分区读取数据,并将从leader代理读取数据。如果在一个使用者组中有多个使用者,这些使用者将分发他们从中读取的分区。
例如,如果使用者组中的使用者多于主题中的分区,则某些使用者将永远不会收到任何消息。

相关问题