Kafka Streams State Store 可以完全瞬态吗
Can a Kafka Streams State Store be entirely transient
我正在使用状态存储来跟踪 运行 有关通过流的消息的时间统计信息。如果任务 fails/is 已迁移,我们不需要重新创建状态 - 一旦任务 migrated/re 开始,我们非常高兴状态从 'fresh' 开始。我的理解是,如果我们不在存储上启用更改日志记录,那么流将不得不重新处理底层主题以使状态存储保持最新——这将导致明显的延迟,我们不希望更改的开销集群中的日志主题。简单地说 - 我们可以拥有一个没有任何形式的持久性的 'throw away state' 吗?
您应该可以将 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");
在这些之间,我认为你可以做到这一点
我正在使用状态存储来跟踪 运行 有关通过流的消息的时间统计信息。如果任务 fails/is 已迁移,我们不需要重新创建状态 - 一旦任务 migrated/re 开始,我们非常高兴状态从 'fresh' 开始。我的理解是,如果我们不在存储上启用更改日志记录,那么流将不得不重新处理底层主题以使状态存储保持最新——这将导致明显的延迟,我们不希望更改的开销集群中的日志主题。简单地说 - 我们可以拥有一个没有任何形式的持久性的 'throw away state' 吗?
您应该可以将 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");
在这些之间,我认为你可以做到这一点