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 互联网短文本统计应用中乱序通常不是非常重要。
public void putEventToStreamDuplicatePrevention(PrimitiveEventprimitiveEventNew)
去重的范围与public void setWATERMARKDELTA(int wATERMARKDELTA)大小有关,迟到超过WATERMARKDELTA视为过期数据。
当然,系统自带的一些适配器,如Socket输入适配器,则已经有参数表示是否去重。级联输出适配器带wartermark参数的,也可以去重。
为了保证数据只处理一次,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越大,修正粒度越大,输出滞后也越大,即只有排查完“后到数据”时间戳不小于当前事件,当前事件才会被输出到流上。相关文章推荐
- SODBASE CEP事件驱动应用----进行告警处理流程管理
- 【Cocos2d-X开发学习笔记】第22期:事件处理机制之触屏事件
- SODBASE CEP学习(十五):常见场景EPL示例
- 菜鸟学习Cocos2d-x 3.x——浅谈事件处理机制
- Chromium网页输入事件处理机制简要介绍和学习计划
- SODBASE CEP学习进阶篇(四):自己控制时钟和时间戳
- SODBASE CEP学习(三):GUI建模工具SODBASE Studio和CEP服务器
- android源码学习-事件分发处理机制
- SODBASE CEP学习进阶篇(七):SODBASE CEP与Spark streaming集成
- SODBASE CEP学习进阶篇(七)续:SODBASE CEP与Spark streaming集成-低延迟规则管理
- React学习之事件绑定处理机制(五)
- Java学习笔记(AWT 之 事件处理机制)
- 【Cocos2d-X开发学习笔记】第24期:事件处理机制之加速度传感器事件
- SODBASE CEP学习(九):SODBASE View 实时图表显示和移动端消息
- AWT事件处理机制学习
- SODBASE CEP学习进阶篇(三):自己写输入输出适配器
- 鼠标滚动一次window.onscroll事件的函数在firfox与Ie中执行的次数不同问题的处理s
- iOS 开发学习之 User Interface(11)iOS事件处理机制及手势 与 MVC浅述
- SODBASE CEP学习(二):运行第一个EPL例子
- SODBASE CEP事件驱动应用----实时支付对账