当前位置:   article > 正文

分布式一致性语义之Exactly-Once、Effectively-Onece等概念_分布式exactlyonce

分布式exactlyonce

分布式一致性消息传递、事件处理等场景中十分重要:

  1. At most Onece:最多一次,如果算子处理事件失败,算子将不再尝试该事件。
  2. At Least Onece:至少一次,如果算子处理事件失败,算子会再次尝试该处理事件,直到有一次成功。
  3. Exactly-Once:严格地,有且仅处理一次,通常有两种方法实现:

1.分布式快照或状态检查点,思想就是对比检查点和分布式快照中的状态,如出现状态不一致就回退到最小状态处,重新计算。
2.At least Onece + 去重,重播失败的算子,并删除重复算子的结果。
从理论上看,上面这两种机制之间存在差异,但两者均可理解为至少一次处理外加幂等保证。上面提到的两种机制均使用持久的后端存储作为事实来源(Source of truth),用于保存每个操作符的状态,并自动提交状态更新。对于机制1(分布式快照/状态检查点),这个持久的后端存储可用于保存流应用程序中全局一致的状态检查点(每个运算符的状态检查点);对于机制2(至少一次事件交付,外加去重),这个持久的后端存储可用于保存每个运算符的状态,以及为了追踪哪些事件已经被成功处理过而为每个运算符生成的事务日志。

  1. Effectively-Onece:有效的一次或者最终一次。状态的提交或对事实来源的持久后端进行的更新可描述为事件(Occurring)的严格一次。然而在计算状态的更新 / 改动,例如所处理的事件正在针对事件执行各种用户定义的逻辑时,如果失败则可能进行多次,这一点正如上文所述。换句话说,事件的处理可能会进行多次,但处理的最终结果只会在持久的后端状态存储中体现一次。因此Streamlio认为“实际一次(Effectively-once)”可以更精确地描述这样地处理语义。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/381425
推荐阅读
相关标签
  

闽ICP备14008679号