Apache flink Flink Statefun并发状态更新
我正在尝试使用ApacheFlink有状态函数实现消息传递场景。 我的一个状态可以通过提供给MatchBinder的两个不同函数进行更新。这两个函数基本上检查当前状态并相应地更新状态Apache flink Flink Statefun并发状态更新,apache-flink,flink-statefun,Apache Flink,Flink Statefun,我正在尝试使用ApacheFlink有状态函数实现消息传递场景。 我的一个状态可以通过提供给MatchBinder的两个不同函数进行更新。这两个函数基本上检查当前状态并相应地更新状态 如果对同一个键同时调用这两个函数,会发生什么情况 对于为同一密钥调用的有状态函数,是否存在队列机制 我们可以为顺序访问锁定状态访问/更新吗 如果同时为 同一把钥匙 MatchBinder基本上是编写单个StateFun函数的一种方便方法,该函数通过首先匹配传入消息的类型(或属性)开始执行。这基本上是一种避免编写
- 如果对同一个键同时调用这两个函数,会发生什么情况
- 对于为同一密钥调用的有状态函数,是否存在队列机制
- 我们可以为顺序访问锁定状态访问/更新吗
...
if (message instanceof A) {
handleA((A) message);
} else if (message instanceof B) {
handleB((B) message);
}
...
因此,在现实中,尽管您为每个绑定案例提供了“不同”的Java函数,但调用的是相同的StateFun函数,并且会选择正确的绑定案例
是否有一个队列机制用于为同一类调用的有状态函数
钥匙
是的,StateFun函数将按地址顺序调用。当函数应用于特定地址时,不会同时应用该地址的其他消息。这几乎是免费的,这要感谢ApacheFlink作为实际的运行时
我们可以为顺序访问锁定状态访问/更新吗
每个地址的状态访问和修改都是原子的和顺序的