spout的可靠性

Spout的可靠性保证


     在Storm中,消息处理可靠性从Spout开始的。storm为了保证数据能正确的被处理, 一个提供了可靠的处理机制的spout需要记录它发射出去的tuple,当下游bolt处理tuple或者子tuple处理失败时spout能够重新发射。子tuple可以理解为bolt处理spout原始tuple。另外一个角度来看,可以将spout发射的数据流看作一个tuple数的主干。如下图:

在图中,实线部分为tuple的主干部分,而虚线部分为子tuple部分,子tuple源于原始的tuple部分。这样产生的结构为tuple树。在有保障数据处理的过程中,bolt每接收到一个tuple,都需要向上游确认应答(ask)者报错。对于有主干一个tuple中的tuple,如果tuple树上的每个bolt进行了确认应答,spout会调用ack方法来表名这条信息已经完全处理了。如果树干中的任何一个bolt出错,或者处理超时,spout会调用fail方法。

Storm接口定义了三个可靠性相关的API:nextTuple(),ack和fail

猜你喜欢

转载自blog.csdn.net/qq_38709565/article/details/84889795