source到channel是put事務(wù),channel到sink是take事務(wù) flume基于事務(wù)傳輸event(批量傳輸),使用兩個獨立的事務(wù)分別處理source到channel和channel到sink,失敗時會將所有數(shù)據(jù)都回滾到source或channel進行重試。
該事務(wù)機制遵循'最少一次'語義,因此數(shù)據(jù)絕不會丟失,但有可能重復(fù)。
source-channel之間的重復(fù)可以靠TailDirSource自帶的斷點續(xù)傳功能解決; channel-sink之間的重復(fù),可以延長等待時間,或者設(shè)置UUID攔截器,然后在redis里維護一個布隆表來使下游實時應(yīng)用去重。