Apache storm 为什么storm使用XOR来确保拓扑中的每个螺栓都成功执行。而不是柜台

Apache storm 为什么storm使用XOR来确保拓扑中的每个螺栓都成功执行。而不是柜台,apache-storm,Apache Storm,我是暴风雨的初学者。Storm的创建者创建了一个非常令人印象深刻的方法来检查拓扑中的每个螺栓,它使用XOR。 但我开始想他为什么不使用柜台。成功执行螺栓后,计数器将减1。因此,当计数器等于0时,表示整个任务已完成 谢谢我相信可以解释为什么计数器不仅效率低下,而且在始终运行的拓扑结构中是不正确的acker-tracker机制 风暴元组拓扑本身可能是一个复杂的DAG。当一个bolt从多个下游源接收到ack时,它与计数器有什么关系?它应该增加它们吗?它应该总是减少它们吗?按什么顺序 风暴元组具有随

我是暴风雨的初学者。Storm的创建者创建了一个非常令人印象深刻的方法来检查拓扑中的每个螺栓,它使用XOR。 但我开始想他为什么不使用柜台。成功执行螺栓后,计数器将减1。因此,当计数器等于0时,表示整个任务已完成


谢谢

我相信可以解释为什么计数器不仅效率低下,而且在始终运行的拓扑结构中是不正确的acker-tracker机制

  • 风暴元组拓扑本身可能是一个复杂的DAG。当一个bolt从多个下游源接收到ack时,它与计数器有什么关系?它应该增加它们吗?它应该总是减少它们吗?按什么顺序

  • 风暴元组具有随机消息ID。计数器将是有限的。拓扑永远运行,发出数十亿个元组。如何将673686557元组映射到计数器id?使用XOR,您只有一个要维护和广播的状态

  • 异或操作是执行效率极高的硬件指令。计数器是需要大量存储的长计数器。它们存在溢出问题,并以较低的空间开销满足解决方案的原始要求