Storm如何保证at least once语义?(3)

概率性出错,也就是说在极小的概率下,即使不按上面的确认流程来走,异或链的结果也可能出现0.但这个概率极小,小到什么程度呢?
用官方的话说就是,如果每秒发送1万个ack消息,50,000,000年时才可能发生这种情况。

如果ackVal不为0,说明tuple-tree或DAG没有完成。如果长时间不为0,通过超时,可以触发一个超时回调,在这个回调中调用spout的fail方法,来进行重放。

如此,就保证了消息处理不会漏掉,但可能会重复。

Storm如何保证at least once语义?

结语

以上,就是storm保证消息至少处理一次的语义的机制 。

Storm进程通信机制分析

Apache Storm 的历史及经验教训 

Apache Storm 的详细介绍请点这里
Apache Storm 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6b8f5d1c3da9df40bc3893e2e2fb5345.html