SODBASE CEP學習(七):Fail retry機制、去重只執行一次機制、事件亂序處理機制

爲了保證事件能夠在分佈式系統中容錯,socket傳輸中採用了fail retry機制,保證網絡短暫斷線不引起數據丟失。

爲了保證數據只處理一次,SODBASE CEP採用了類似Google MIllWheel的Watermark技術。也類似於storm trident的state保留狀態的方法,不同的是SODBASE CEP Watermark技術同時可以處理事件亂序的問題。而在storm 互聯網短文本統計應用中亂序通常不是非常重要。

1.配置方法

1.1 Fail retry

      在Socket 輸出適配器中配置重試次數。

1.2 去重

      這裏說的去重是同一事件由於雙熱HA,或上游重發的緣故導致重複。類似獨立UV(Unique Visitor)去重有很多概率去重算法或內存索引去重方法供參考,就不在本文中討論了。如果自己實現輸入適配器,OptimizedInputAdaptorI提供了去重的方法,相同的事件用此方法添加到流上,只會添加一次。

public void putEventToStreamDuplicatePrevention(PrimitiveEventprimitiveEventNew)

去重的範圍與public void setWATERMARKDELTA(int wATERMARKDELTA)大小有關,遲到超過WATERMARKDELTA視爲過期數據。

當然,系統自帶的一些適配器,如Socket輸入適配器,則已經有參數表示是否去重。級聯輸出適配器帶wartermark參數的,也可以去重。

1.3去重並且修正亂序

public voidputEventToStreamCorrectDisorder(PrimitiveEvent primitiveEventNew),此方法會修正亂序。同時wATERMARKDELTA越大,修正粒度越大,輸出滯後也越大,即只有排查完“後到數據”時間戳不小於當前事件,當前事件纔會被輸出到流上。


發佈了40 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章