使用分区的apachekafka伸缩主题

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

我们开始使用apachekafka将timeseries数据持久化到timeseries数据库中。我们从一个主题开始,一个生产者编写这个主题,一个消费者阅读这个主题并将数据转储到timeseries数据库。
我们有3个代理示例,在第一次尝试中我们注意到,生产者非常快地将消息写入主题。在30分钟内,我们收到了大约150万条信息。消费者每秒只发送300条信息。
我们的下一种方法是对主题进行分区,并拥有更多的使用者示例(等于分区的数量)。这无疑提高了用户的写入速度。现在我的问题是:
如果我将主题分区设置为6,但只有3个代理示例,会发生什么。哪个代理示例将是分区1到6的领导者?
有没有一个公式来确定我需要多少个分区?因为这是我们的测试环境,所以我们可以使用它并扩展它。我们可能无法在生产环境中执行相同的操作。那么如何确定分区大小呢?

5lhxktic

5lhxktic1#

分区会分布在代理之间。不可能知道哪个代理将被选为给定分区的领导者,而且它会随着时间的推移而改变。根据kafka的哪个版本和您使用的消费api,您的消费者可能会自己发现分区引线,也可能不会。与 SimpleConsumer 您必须自己找到分区领导者,并在代码中响应新的领导者选举(而不是由api自动处理)。
至于分区的数量——除了这个,没有真正的“公式”:你不能拥有比分区更多的并行性。如果您有4个分区和5个消费者,其中一个消费者将挨饿。对于大型主题,我通常使用12或60或其倍数作为分区数。在不同数量的消费者之间容易而清晰地划分的东西。
另外,请注意,您可以稍后更改分区的数量,但有一些注意事项。请参阅此答案,了解如何使用和注意事项。

相关问题