storm 的三种计算语义

1. at-most-once:spout针对相同的tuple只发送一次即可,不需要实现fail和ack方法。


2. at-least-once:是用acker机制实现的,我们需要实现spout的两个方法:fail和ack,在topology上增加一个ackerbolt,spout和bolt发出的每一个tuple都会被将跟踪信息写到ackerbolt,如果这个tuple正常被处理,则调用spout的ack方法,否则调用fail方法。


3. exactly-once:使用storm的高级部分trident实现。batch作为一个transaction的单位,一个batch包含多个tuple,transaction分成两个部分:processing和commit,processing阶段并行执行,commit阶段严格按序提交transaction状态数据到zk,在transaction的任一阶段出现问题,都会将该事务的结果扔掉,spout重发该事务的batch数据。

你可能感兴趣的:(大数据)