具有更改日志主题与日志压缩源主题的 Kafka Streams KTable 存储

Bal*_*ani 5 apache-kafka apache-kafka-streams

我正在一个输入主题上构建 KTable,我正在两个 Kafka Stream 应用程序实例上加入 KStream。

KTable 的输入主题已经是一个日志压缩主题。因此,当我的一个应用程序实例出现故障时,另一个实例状态存储似乎通过从输入日志压缩主题中读取来刷新整个状态。

所以不需要为我的 KTable 存储启用日志记录(更改日志)?

我的源输入日志压缩主题可能有数百万条记录,所以如果我启用该 KTable 状态存储的日志记录,它会在失败的情况下改善我的状态存储刷新时间,还是不会产生影响,因为源主题已经被日志压缩了?谢谢!

Mat*_*Sax 2

那么不需要为我的 KTable 存储启用日志记录(更改日志)?

这是正确的。Kafka Streams 不会创建额外的变更日志主题,而是使用输入主题进行恢复(无需复制数据)。

所以如果我启用 KTable 状态存储的日志记录

你会怎么做?

如果发生故障,它会改善我的状态存储刷新时间吗?还是不会产生影响,因为源主题已经进行了日志压缩?

一般来说,你不会获得任何东西。正如您所说的正确,输入主题无论如何都会被压缩,因此两个主题将包含大致相同的数据。

如果您想减少随着时间的推移而出现的故障,您应该StandbyTasks通过StreamsConfig参数进行配置num.standby.replicas(默认为 0,因此您可以将其设置为 1)。参见https://docs.confluence.io/current/streams/developer-guide.html#state-restoration-during-workload-rebalance