我正在输入主题上构建KTable,我正在两个Kafka Stream应用程序实例上加入KStream。
KTable的输入主题已经是日志压缩主题。因此,当我的一个应用程序实例出现故障时,另一个实例状态存储似乎通过读取输入日志压缩主题来刷新整个状态。
所以不需要为我的KTable商店启用日志记录(更改日志)?
我的源输入日志压缩主题可能有数百万条记录,所以如果我启用了对该KTable状态存储的日志记录,它会在出现故障时改善我的状态存储刷新时间,或者它不会产生影响因为源主题已经存在日志压缩?谢谢!
答案 0 :(得分:0)
所以不需要为我的KTable商店启用日志记录(更改日志)吗?
那是对的。 Kafka Streams不会创建额外的更改日志主题,但会使用输入主题进行恢复(无需复制数据)。
所以如果我启用了对该KTable状态商店的登录
你会怎么做?
是否会在出现故障时改善状态存储刷新时间,或者由于源主题已经日志压缩而无法生效?
一般来说,你不会得到任何东西。正如您所说的那样,输入主题无论如何都会被压缩,因此两个主题都包含大致相同的数据。
如果您希望减少故障转移时间,则应通过StandbyTasks
参数StreamsConfig
配置num.standby.replicas
(默认值为0,因此您可以将其设置为1)。 Cf https://docs.confluent.io/current/streams/developer-guide.html#state-restoration-during-workload-rebalance