复合事件处理CEP简介( 二 )

  • 依赖关系:事物的状态属性之间彼此的依赖关系和约束关系 。
  • 因果关系:对于完整的动作过程 , 结果状态为果 , 初始状态和动作都可以视为原因 。 类比哲学上论述事物如何发展也是有两个因素的 , 一是内部本质 , 二是外部作用 。
  • 复合事件处理面临的挑战:
    • 减少应用存储数据(在分析数据之前)造成的延迟
    • 能够持续 , 实时地分析多个数据流
    • 能够关联不同数据流中的事件 , 从而发现新的相关情形
    • 能够迅速响应新发现的危险或机会
    • 能够迅速的将先前发现的规律应用到新的数据流分析模型中
    • 能够利用已有的应用开发能力快速开放新的高性能 , 高扩展度的应用
    • 确保应用和系统的连贯性 。
    CEP 依赖下面的一组技术:
    • Event-pattern detection 事件模式
    • Event abstraction 事件抽象
    • Event filter 事件过滤
    • Event aggregation and transformation 事件聚合和传输
    • Modeling event hierarchies 模型化事件层次结构
    • Detecting relationships (such as causality, membership or timing) between events 事件间关系检测(比如因果、从属或者时间先后等)
    • Abstracting event-driven processes 事件驱动过程抽象
    事件处理语言(EPL , Event processing language)用于系统中制定和查询感兴趣的事件序列 , 通常是类SQL的语句 , 从SQL语句中扩展而来 。
    复合事件处理CEP简介文章插图
    相关开源项目:
    • Esper:
    • Drools Fusion:
    • FlinkCEP:
    • Siddhi:
    • EventStore:
    CEP和实时计算有什么关系实时计算也是一种框架 , 负责提供低延迟的计算服务 , 这样就给人一种“实时”的感觉 , 它本身并不关心被计算的是什么 。 大部分实时计算框架采用了流式(stream)计算的方法 , 是因为该方法可以很好地满足实时计算的设计需求 。 CEP和实时计算其实是属于两个不同领域的框架 , 但两者在业务和具体实现的需求下 , 紧密地结合到了一起 。 CEP只是提供了一种处理复合事件的框架 , 并没有对时效性做严格要求 。 我们也可以用传统技术实现CEP系统 , 只不过从事件发生到结果获取 , 再到采取行动 , 中间的延迟很大 。 而我们通常希望降低这种延迟 , 来获取更大的业务价值 。 实时计算恰恰提供了一种低延迟的计算服务 , 所以多数CEP系统在实现其计算模块时采用了实时计算的技术 。
    复合事件处理CEP简介文章插图
    再者 , 如同前面提到的 , CEP较佳的设计模式是管线架构设计 。 这种设计可以让事件像水一样流过各个处理模块 , 它和实时计算的流式计算非常相似 。 基于这个共同点 , CEP和实时计算紧密地结合在一起 。 总的来说 , 我感觉两者的关系是:实时计算提供了一种底层的计算服务 , CEP可以架构其上 。
    CEP应用案例:滴滴实时营销
    • 地理围栏
    • 乘客线上冒泡1min内没有发单
    • 乘客下单后2min内没有被司机接单
    • 乘客在不同业务线之间的比价行为
    异常检测(事后回溯->提前干预)
    • 司机开始计费后12小时还未更新成下一状态
    • 企业级乘客2min内连续重复发送3个以上订单
    • 同一用户5min内重复进线5次
    • 订单超时未支付
    作者:biaodianfu
    出处: