此作为参考,轮廓的流更新存储在KTable对象。
此数据将在KTable对象中存储多长时间?
假设我们运行应用程序的多个实例。而且,实例崩溃。KTable数据属于那个实例怎么样?它会被另一个实例“恢复”吗?
我正在考虑存储很少更新的数据更新。因此,如果一个实例崩溃并且另一个实例将再次从头开始构建那些数据,则它们可能再也无法获取这些数据了。因为它们再也不会流式传输,或者说的很简单,所以很少。
KTable有一个主题作为后盾,因此它将确定其保留+清除策略是什么。
如果清除策略为compact
,则每个唯一密钥都将“永久”存储,或者直到代理空间用完为止(以较早者为准)。
如果运行多个实例,则每个KTable将从其使用的分区中保留一部分数据,每个表将不具有所有数据。
如果任何实例崩溃,它将需要从其changelog主题的开头读取所有数据,但是您可以配置备用副本以解决该情况
有关更多信息,请访问https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Streams+Internal+Data+Management