eth*_*b_0 6 apache-kafka kafka-consumer-api
我知道消费者组中活跃消费者的最大数量是主题的分区数量。
如果消费者处理速度慢,最佳实践是什么?如何实现更多的并行性?
示例:一个主题有 6 个分区,生产者每秒生成数千条消息。所以我组里最多有6个消费者。考虑到处理这些消息很复杂,而且消费者比生产者慢得多。结果是消费者总是落后于最后的偏移量,并且滞后性正在增加。
在传统的 MQ 系统中,我们只需添加越来越多的消费者即可保持最新状态。
由于组中消费者的总数最多是分区的数量,如何使用 Kafka 实现这一点?我是不是该:
对于这种情况,最佳做法是什么?
在Kafka中,分区是并行的单位。
在不知道我们确切的用例和要求的情况下,很难提出准确的建议,但有一些选择。
首先,您应该真正考虑拥有更多分区。6 个分区相对较小,您可以轻松拥有 60、120 甚至更多分区(以及相应的消费者数量)。突然之间,每个消费者要做的工作量显着减少。
此外,如果您的要求允许,您还可以快速消费并将记录处理分散到许多工作人员中。在这样的解决方案中,维持顺序比较困难,但如果您不需要它,那么您可以考虑它。
我不确定通过 MQ 队列路由消息在这种情况下是否真正有帮助。如果您的读取速度仍然比写入速度慢,队列中的数据量将会增加,直到没有剩余磁盘空间。
Kafka 更好地设计为充当生产者和消费者之间的缓冲区,因此只需确保主题有保留限制,从而允许消费者方面具有一定的灵活性,而不会丢失数据。
归档时间: |
|
查看次数: |
5175 次 |
最近记录: |