Storm的ack机制

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是一个意思!)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值