GlobalKTable 中的数据会过期吗?
Does data in a GlobalKTable expire?
我正在使用 GlobalKTable 作为键值存储。商店中的数据很少变化,但确实会变化。
我每周收到一次文件,该文件的内容以键值对格式放入流中。然后由需要数据的应用程序将其存储为 GlobalKTable。
我担心的是,该文件没有指定自上一个文件以来密钥何时被删除。在这种情况下,我不希望旧的、不再有效的密钥永远挂在应用程序商店中。
一个例子:
第 1 周:
a=1
b=2
c=3
d=4
第 2 周:
a=1
b=2
d=4
e=5
我对该主题启用了压缩,并保留了几周的时间。
在所有应用程序的 GlobalKTable 存储中 c
会发生什么情况?一旦主题从流中删除数据,它最终会过期吗?或者它会一直呆在那里直到应用程序重新启动?
c
将停留在运行 Kafka Streams 客户端的计算节点上,直到
- 在经纪人
c
上由于保留期而被删除(请注意,保留期是一个下限,可能需要比保留期更长的时间,直到 c
被实际删除)
- Kafka Streams 客户端停止,
- 本地状态被消灭,
- 新的Kafka Streams客户端在同一个计算节点上重启。
第 4 步将从主题恢复本地状态,因为它不会找到任何本地并且不再读取 c
。 Kafka Streams 中的键值存储没有任何保留期,并且对代理主题的清理不会触发 Kafka Streams 客户端上的任何操作。
如果您没有通过向主题发送逻辑删除记录 c=null
来从主题中明确删除 c
,则 c
将不会在全局 table.
我正在使用 GlobalKTable 作为键值存储。商店中的数据很少变化,但确实会变化。
我每周收到一次文件,该文件的内容以键值对格式放入流中。然后由需要数据的应用程序将其存储为 GlobalKTable。
我担心的是,该文件没有指定自上一个文件以来密钥何时被删除。在这种情况下,我不希望旧的、不再有效的密钥永远挂在应用程序商店中。
一个例子:
第 1 周:
a=1
b=2
c=3
d=4
第 2 周:
a=1
b=2
d=4
e=5
我对该主题启用了压缩,并保留了几周的时间。
在所有应用程序的 GlobalKTable 存储中 c
会发生什么情况?一旦主题从流中删除数据,它最终会过期吗?或者它会一直呆在那里直到应用程序重新启动?
c
将停留在运行 Kafka Streams 客户端的计算节点上,直到
- 在经纪人
c
上由于保留期而被删除(请注意,保留期是一个下限,可能需要比保留期更长的时间,直到c
被实际删除) - Kafka Streams 客户端停止,
- 本地状态被消灭,
- 新的Kafka Streams客户端在同一个计算节点上重启。
第 4 步将从主题恢复本地状态,因为它不会找到任何本地并且不再读取 c
。 Kafka Streams 中的键值存储没有任何保留期,并且对代理主题的清理不会触发 Kafka Streams 客户端上的任何操作。
如果您没有通过向主题发送逻辑删除记录 c=null
来从主题中明确删除 c
,则 c
将不会在全局 table.