zoukankan      html  css  js  c++  java
  • 分布式一致性语义之Exactly-Once、Effectively-Onece等概念

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

    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)”可以更精确地描述这样地处理语义。
  • 相关阅读:
    【Nginx】开启 gzip和缓存
    webpack分离css单独打包
    【转】为什么Github没有记录你的Contributions
    Swiper使用遇到的问题
    Jenkins 自动化构建
    Pre标签 自动换行
    Gulp入门教程
    计数排序
    直接插入排序
    等差素数列
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/12340936.html
Copyright © 2011-2022 走看看