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