如何根据 flink 中不同流中的事件处理已经可用的状态

问题描述

我们正在努力根据帐户上的活动得出帐户的状态。我们根据帐户上的用户活动计算并保留到期日期(即帐户到期的暂定未来日期)。

我们有一个手动日期更改事件,它提供了一个日期,根据该日期将帐户的状态发送为已过期。

我想知道实现这一目标的最佳方法是什么。 所以,我的问题是,与计算到期日期相比,日期更改事件是在未来发生的,广播状态可以解决这个问题吗?如果是,请建议方法。 或者,有没有像 Table API 这样更好的方法解决这个问题?

解决方法

广播状态适用于您需要共享信息或调用未键控的操作,因此无法发送到一个相关实例的情况(例如这种情况)。

如果您需要存储广播状态,请记住,每个实例都会在堆上存储广播状态的副本,并将该副本包含在其检查点中。

如果您正在使用 context.applytokeyedstate,请小心对确定性的键控状态进行更改——否则,如果广播操作符的某些实例已应用键状态的更改,而其他实例没有更改,您最终可能会出现不一致的情况。