Flink Timer onTimer 事件 - 它们是否强制重新分配流?

问题描述 投票:0回答:1

我有 KeyedProcessFunction (名为

Stateless
),可以处理每个键的数据(例如交易 id)。
Stateless
是轻量级的并且不使用状态 - 它仅将计时器设置为计时器。

上游我正在从 Kafka 读取数据(已分区,密钥是哈希 + 事务 id 的模)。下游并不重要。 我已阅读 Keyed State 文档,并且我知道对于有状态处理,数据将被重新分配(洗牌),并且可能会设置检查点以保证一致性,但尚不清楚它如何适用于计时器。

当我不使用状态但注册计时器时(我假设是根据关键上下文):

  1. 事件是否基于键在任务之间重新分配和检查点,类似于状态处理?
  2. 计时器到期事件是否在任务之间重新分配或在注册它的机器上执行?

我已阅读文档和代码示例。

apache-flink flink-streaming
1个回答
0
投票

在几乎所有方面,计时器的行为方式都与状态相同。计时器是有密钥的,并且仅在有密钥的流上可用。它们的范围仅限于创建它们的特定运算符——通常是 KeyedProcessFunction。此外,计时器是有状态的,因为它们包含在检查点中。

我不会说计时器强制重新分配流,而是说它们需要它。

© www.soinside.com 2019 - 2024. All rights reserved.