繁体   English   中英

为什么 Kafka 代理在 __consumer_offsets 主题中存储消费者组的重新平衡元数据?

[英]Why do Kafka brokers store rebalance metadata for consumer groups in the __consumer_offsets topic?

在处理 Kafka Streams 应用程序时,我们观察到组协调器代理将重新平衡元数据存储在__consumer_offsets主题中。

因为在我们的例子中我们有 1200 个流线程,这个元数据变得很大(大约 100 MB 没有压缩,LZ4 压缩后大约 25 MB),并且由于offsets.load.buffer.size参数的默认值只有 5MB,follower brokers无法读取相应的__consumer_offsets主题分区。 当旧的 GroupCoordinator 出现故障时,这会导致新的 GroupCoordinator 响应error_code=16 (NotCoordinatorException)

为什么经纪人在__consumer_offsets主题中存储消费者组的重新平衡元数据,有没有办法禁用它?

出于故障转移的原因存储组元数据。 如果 GroupCoordinator 死了,另一个 broker 接管了这些组,它需要这些数据才能正常工作。 这是消费者/代理功能,并非特定于 Kafka Streams。

例如,新的 GroupCoordinator 必须知道组中有哪些成员才能应用相应的超时(即session.timeoutmax.poll.timeout )。

因此,无法禁用它,因为集群正常工作至关重要。 您可以更改相应的配置设置,为代理提供足够大的内存限制来处理组元数据。

对于普通的KafkaConsumers组元数据通常不会增长那么快,处理大组通常不是问题。 但是, KafkaStreams相对于客户端增加了额外的元数据,并且它的元数据特别大。 这是一个已知问题,我相信它会在未来得到解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM