是否可以选择在 Kafka 流中冷引导持久存储?

Is there any option of cold-bootstraping a persistent store in Kafka streams?

我已经在 kafka-streams 上工作了几个月。我们使用 RocksDB 来存储数据。现在,变更日志主题只保留几天的数据,如果我们的应用程序的持久存储有几个月的数据。如果一个分区从一个节点移动到另一个节点(我认为,通过更改日志发生),将如何恢复存储状态。

此外,如果节点包含活动任务并引入新节点。因此,副本将被提升为活动副本,新副本将开始在这个新节点上构建。因此,如果更改日志只有几天的数据,新副本将只有该数据,而不是原来的几个月。

那么,有没有我们可以将数据从活动存储而不是更新日志传输到副本的选项(因为它只有一小部分数据)。

用于备份存储的变更日志主题没有保留时间,但配置为启用 log-compaction(参见 https://kafka.apache.org/documentation/#compaction)。因此,保证无论您运行多久都不会丢失数据。变更日志主题将始终包含与您的 RocksDB 存储完全相同的数据。

因此,对于fail-over或scale-out,当任务迁移并且需要重建商店时,它将是原始商店的完整副本。