1、批处理
对于容错机制,Storm通过一个系统级别的组件acker,结合xor校验机制判断一个tuple是否发送成功,进而spout可以重发该tuple,保证一个tuple在出错的情况下至少被重发一次。但是在需要精确统计tuple的数量如销售金额场景时,希望每个tuple”被且仅被处理一次” 。Storm 0.7.0引入了Transnational Topology, 它可以保证每个tuple”被且仅被处理一次”, 这样我们就可以实现一种非常准确,且高度容错方式来实现计数类应用。逐个处理单个tuple,增加很多开销,如写库、输出结果频率过高。事务处理单个tuple效率比较低,因此storm中引入batch处理。批处理是一次性处理一批(batch)tuple,事务可确保该批次要么全部处理成功,如果有处理失败的则全部不计,Storm会对失败的批次重新发送,且确保每个batch被且仅被处理一次。
2、事务机制原理
对于只处理一次的需要,从原理上来讲,需要在发送tuple的时候带上txid,在需要事务处理的时候,根据该txid是否以前已经处理成功来决定是否进行处理,当然需要把txid和处理结果一起做保存。在事务batch处理中,一批tuple赋予一个txid,为了提高batch之间处理的并行度,storm采用了pipeline(管道)处理模型,这样多个事务可以并行执行,但是commit的是严格按照顺序的。
node1、node2、node3、node4,4个处理阶段;
tx1、tx2、tx3、tx4,4个事务;
【Storm】批处理事务原理以及事务
最新推荐文章于 2022-07-05 00:08:57 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)