1. 程式人生 > >storm 的三種計算語義

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資料。