我有 KeyedProcessFunction (名为
Stateless
),可以处理每个键的数据(例如交易 id)。
Stateless
是轻量级的并且不使用状态 - 它仅将计时器设置为计时器。
上游我正在从 Kafka 读取数据(已分区,密钥是哈希 + 事务 id 的模)。下游并不重要。 我已阅读 Keyed State 文档,并且我知道对于有状态处理,数据将被重新分配(洗牌),并且可能会设置检查点以保证一致性,但尚不清楚它如何适用于计时器。
当我不使用状态但注册计时器时(我假设是根据关键上下文):
我已阅读文档和代码示例。
在几乎所有方面,计时器的行为方式都与状态相同。计时器是有密钥的,并且仅在有密钥的流上可用。它们的范围仅限于创建它们的特定运算符——通常是 KeyedProcessFunction。此外,计时器是有状态的,因为它们包含在检查点中。
我不会说计时器强制重新分配流,而是说它们需要它。