Storm的ack机制

来源:互联网 发布:ipad能用mac系统 编辑:程序博客网 时间:2024/04/29 02:59

Storm的ack机制:

1.Storm所谓的消息可靠性指的是Storm保证每个tuple都能被topology完全处理,而且处理的结果要么成功要么失败。出现失败的原因可能有两种,即节点处理失败或者处理超时。

2.Storm的Bolt有BasicBolt和RichBolt,在BasicBolt中,BasicOutputCollector在emit数据的时候,会自动和输入的tuple相关联,而在execute方法结束的时候那个输入tuple会被自动ack(有一定的条件)。

3.在使用RichBolt时要实现ack,则需要在emit数据的时候,显示指定数据源的tuple,即collector.emit(oldTuple, newTuple);并且需要在execute执行成功后调用源tuple的ack进行ack.

4.如果可靠性对你来说不是那么重要,你不太在意在一些失败的情况下损失一些数据,那么你可以通过不跟踪这些tuple树来获取更好的性能。


有三钟方法可以去掉可靠性:
1.把Config.TOPOLOGY_ACKERS设置成0,Storm会在Spout发射一个tuple之后立马调用spout的ack方法,也就是说这个tuple树不会被跟踪。

2.在tuple层面去掉可靠性。可以在发射tuple的时候不指定messagid来达到不跟踪某个特定的spout tuple的目的。

3.在发射这些tuple的时候unanchor它们。这样这些tuple就不会在tuple树里,也就不会被跟踪了。

(其实2和3是一个意思!)


原创粉丝点击