【问题标题】:Kafka config replica.fetch.max.bytes on a per-topic level每个主题级别的 Kafka 配置 replica.fetch.max.bytes
【发布时间】:2019-06-27 13:08:29
【问题描述】:

我想将 Kafka 集群设置为仅允许有关特定主题的大型消息。从docs 我看到,如果我想在整个集群级别执行此操作,我可以通过设置message.max.bytes 以允许代理上的大量数据和replica.fetch.max.bytes 允许它被复制来实现,但我的理解是,这会增加集群中所有主题的内存使用量,而不仅仅是我知道可以接收大消息的主题。还有一个主题级设置max.message.bytes 控制消息的最大大小,但我没有看到控制复制操作的最大数据大小的主题级设置。这些密切相关的设置之一在主题级别上不可配置,这似乎很奇怪。也许我错过了这样的设置,或者还有其他方法可以实现这些目标?

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    replica.fetch.max.bytes 只能在代理级别设置。但是,您可以在消费者端设置max.partition.fetch.bytes

    服务器将返回的每个分区的最大数据量。 记录由消费者分批获取。如果第一条记录 提取的第一个非空分区中的批次大于 此限制,该批次仍将被退回,以确保 消费者可以进步。接受的最大记录批量大小 代理是通过 message.max.bytes (代理配置)或 max.message.bytes(主题配置)。请参阅 fetch.max.bytes 以限制 消费者请求大小。

    请注意,这是按分区配置的,这意味着如果您将其设置为较大的数字,如果您也有很多分区,它将消耗大量内存。

    【讨论】:

    • 是的,但是replica.fetch.max.bytes 必须设置为 Kafka 在经纪人未能持有的情况下保证弹性,对吗?对于关心弹性的用户来说,如此有效地听起来像是代理级别的设置使max.message.bytes无效。
    猜你喜欢
    • 1970-01-01
    • 2019-10-06
    • 2021-12-08
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2015-12-11
    相关资源
    最近更新 更多