我正在一个输入主题上构建 KTable,并在两个 Kafka Stream 应用程序实例上加入 KStream。
KTable的输入主题已经是日志压缩主题。因此,当我的一个应用程序实例出现故障时,另一个实例状态存储似乎通过读取输入日志压缩主题来刷新整个状态。
那么我的 KTable 存储不需要启用日志记录(更改日志)?
我的源输入日志压缩主题可能有数百万条记录,因此,如果我启用该 KTable 状态存储的日志记录,它会在发生故障时改善我的状态存储刷新时间,或者不会产生任何影响,因为源主题已经被日志压缩?谢谢!
所以不需要为我的 KTable 存储启用日志记录(更改日志)?
是的。 Kafka Streams 不会创建额外的变更日志主题,而是使用输入主题进行恢复(无需复制数据)。
所以如果我启用 KTable 状态存储的日志记录
你会怎么做?
它会在失败时改善我的状态存储刷新时间吗?还是不会产生任何效果,因为源主题已经被日志压缩了?
一般来说,你不会有任何收获。正如您所说,输入主题无论如何都会被压缩,因此两个主题将包含大致相同的数据。
如果你想减少随着时间的推移失败,你应该通过
StandbyTasks
参数StreamsConfig
配置num.standby.replicas
(默认为0,所以你可以将其设置为1)。参见 https://docs.confluence.io/platform/current/streams/architecture.html#fault-tolerance