|
|
1
3
容错从不提供“精确执行一次”的保证,这是不可能的。如果一个集群成员崩溃,您不知道它是否执行了REST操作。即使REST操作本身失败了,它也可能是远程执行的,但是响应传递失败了——你不知道。 相反,如果操作失败,则会重试。内部Jet顶点(如窗口累加器)将所有状态保存为快照。换句话说,不存在未保存到快照中的顶点的状态。因此,如果重新启动作业,则丢弃上次快照之后执行的操作,并还原状态,就像从未执行过该操作一样。这就是为什么我们可以称之为“一次”。
我们称之为
等幂可能是您的休息服务的方式。例如,可以通过忽略重复项来实现。使用IMap无法解决这个问题:即使您能够“只听一次”,REST操作可能会失败,您也不知道它是否在远程执行。 |