微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 Storm 使用 XOR 来确保拓扑中的每个 Bolt 都成功执行而不是计数器

如何解决为什么 Storm 使用 XOR 来确保拓扑中的每个 Bolt 都成功执行而不是计数器

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

谢谢

解决方法

我相信可以解释为什么计数器不仅效率低下,而且在始终运行的拓扑中是一种错误的acker 跟踪器机制。

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

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

  • XOR 运算是执行效率极高的硬件指令。计数器是需要大量存储的多头。它们存在溢出问题,并以低空间开销解决方案的原始要求失败。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。