您的位置:首页 > 大数据 > 人工智能

SODBASE CEP学习(七):Fail retry机制、去重只执行一次机制、事件乱序处理机制

2015-05-05 10:41 281 查看
为了保证事件能够在分布式系统中容错,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越大,修正粒度越大,输出滞后也越大,即只有排查完“后到数据”时间戳不小于当前事件,当前事件才会被输出到流上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: