【问题标题】:Can a Kafka Streams State Store be entirely transientKafka Streams 状态存储可以完全是瞬态的吗
【发布时间】:2021-03-13 04:29:21
【问题描述】:

我正在使用状态存储来跟踪有关通过流的消息的运行时统计信息。如果任务失败/迁移,我们不需要重新创建状态 - 一旦任务迁移/重新启动,我们非常高兴状态从“新鲜”开始。我的理解是,如果我们不在存储上启用更改日志记录,那么流将不得不重新处理底层主题以使状态存储保持最新 - 这将导致显着延迟,并且我们不希望更改的开销集群中的日志主题。简而言之 - 我们可以在没有任何形式的持久性的情况下拥有“丢弃状态”吗?

【问题讨论】:

    标签: apache-kafka apache-kafka-streams


    【解决方案1】:

    您应该可以将acceptable.recovery.lag 设置为INT.MAX。这应该使任何状态存储处于活动状态,即使它没有赶上结束偏移量。这不会完全“新鲜”地开始,因为它会赶上商店,但不应该等待商店重新填充。

    您还可以将更改日志主题保留时间设置为 0。例如:

    Properties streamsSettings = new Properties();
    // Override default for both changelog and repartition topics
    streamsSettings.put("topic.PARAMETER_NAME", "topic-value");
    // alternatively, you can use
    streamsSettings.put(StreamsConfig.topicPrefix("PARAMETER_NAME"), "topic-value");
    

    在这些之间我认为你可以做到这一点

    【讨论】:

    • 您好 - 感谢您的回答。我刚刚又想起了这个。 Acceptable.recovery.lag 不是应用于整个应用程序的配置,而不是特定的主题/状态存储吗?还考虑将更改日志主题保留时间设置为 0 可能对我不起作用,因为这些段需要一些时间才能填充,并且主题中仍有数天的消息......
    猜你喜欢
    • 2019-07-03
    • 1970-01-01
    • 2021-10-11
    • 2020-06-27
    • 2018-10-24
    • 2021-01-04
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    相关资源
    最近更新 更多