Kafka的消费规模不断扩大

j91ykkif  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(317)

我们使用kafka作为严格有序的队列,因此 single topic/single partition/single consumer group combo正在使用中。以后我应该可以使用多个分区了。
我的消费者是 spring-boot 应用程序侦听器,从同一主题生成和使用。所以消费者群体是固定的,总是有一个消费者。 Kafka version 0.10.1.1 在这种情况下 topic-0 还有一些 __consumer_offsets_XX 生长。事实上 __consumer_offsets_XX 增长非常高,即使它应该每60分钟定期清除一次(默认情况下)。消费者并不是一直在阅读,但它已经阅读了 auto.commit.enabled=true 默认情况下, log.retention.minutes (默认7天)> offset.retention.minutes (默认为1天);但在我的情况下,由于我的消费者群体/消费者是固定的和单一的;把这些信息藏起来可能没有任何意义 topic-0 一旦被消耗。要我做些什么吗 log.retention.minutes 最短3天?
我能做这个吗 offset.retention.minutes 降低到能够控制增长的大小 __consumer_offsets_XX 不接触 auto.commit 设置?

bvjxkvbb

bvjxkvbb1#

更改offset.retention.minutes将无济于事。这是为了释放非活动组的偏移所使用的空间。假设没有太多的非活动组ID,则不需要它。
更改log.retention.bytes config for offsets主题,并根据需要将其设置为较低的值。您可以使用kafka-config.sh或您知道的其他方式更改此配置。
一旦你限制了主题大小,Kafka压缩将在主题大小达到阈值时启动,并为你清理它。

sg24os4d

sg24os4d2#

offsets.retention.minutes 以及 log.retention.XXX 只有在发生偏移文件滚动时,属性才会影响记录/消息/日志的物理删除。
一般来说, offsets.retention.minutes 属性指示,如果某个使用者在指定的时间内消失,代理应该忘记该使用者,即使不从磁盘中删除日志文件,代理也可以这样做。
如果您将此值设置为相对较低的数字并检查 __consumer_offsets 主题虽然没有活跃的消费者,但随着时间的推移,您会注意到如下情况:

[group,topic,7]::OffsetAndMetadata(offset=7, leaderEpoch=Optional.empty, metadata=, commitTimestamp=1557475923142, expireTimestamp=None)
    [group,topic,8]::OffsetAndMetadata(offset=6, leaderEpoch=Optional.empty, metadata=, commitTimestamp=1557475923142, expireTimestamp=None)
    [group,topic,6]::OffsetAndMetadata(offset=7, leaderEpoch=Optional.empty, metadata=, commitTimestamp=1557475923142, expireTimestamp=None)
    [group,topic,19]::NULL
    [group,topic,5]::NULL
    [group,topic,22]::NULL

这意味着事件存储系统,如Kafka,通常是如何工作的。它们记录新的事件,而不是改变现有的事件。
我不知道Kafka的任何版本默认每60分钟删除/清理一次主题,我感觉你误解了文档中的某些内容。
看来 __consumer_offsets 管理的主题与常规主题有很大的不同。唯一的办法 __consumer_offsets 删除是为了强制滚动其文件。然而,这种情况与常规日志文件不同。而常规日志文件(用于数据主题)在每次删除时都会自动滚动,而不考虑 log.roll. 财产, __consumer_offsets 别那么做。如果它们没有滚动并停留在初始位置 ...00000 段,它们根本不会被删除。所以,这似乎是减少 __consumer_offsets 文件是:
设置相对较小 log.roll. ;
操纵 offsets.retention.minutes 如果你能负担得起切断你的消费者;
否则调整 log.retention.XXX 财产。

相关问题