复合事件处理CEP简介

23 sec read

什么是复合事件处理?

这是一个IT事件爆发的时代,各种IT系统之间或系统内部,每天产生大量事件。系统在关键点打日志、系统之间交流信息,都是事件。但我们对这些事件往往视而不见,当成垃圾一股脑儿全扔了。其实只要处理得当,垃圾也可以变成资源。

复合事件处理(CEP,Complex Event Processing)是一种基于动态环境中事件流的分析技术,事件在这里通常是有意义的状态变化,通过分析事件间的关系,利用过滤、关联、聚合等技术,根据事件间的时序关系和聚合关系制定检测规则,持续地从事件流中查询出符合要求的事件序列,最终分析得到更复杂的复合事件,主要用于网络诈欺识别等防止犯罪,银行等金融行业防止,以及风险规避和营销决策等。

首先,CEP是一种框架。和其他框架一样,它也提供了一套流程或一种标准。CEP提供的则是一套处理复合事件(complex event)的流程。其次,CEP的特点和核心能力在于可以便捷地处理复合事件。CEP之所以有这样的能力,是由于它可以处理多输入对多输出的映射关系,“复合(complex)”也正是相对于传统的单一输入和单一输出而言的。CEP多个输入之间的关系可以是独立的,也可以是相关的,它的多个输出亦是如此。举个例子:

输入:

  • 皮肤感觉温度下降
  • 鼻子感觉湿气很重
  • 耳朵听到远方雷声
  • 眼睛看到乌云闪电

判断模块得出结论:即将下雨

输出:

  • 把衣服收到屋内
  • 出门要带伞

最后,CEP天然拥有强大的可扩展性(Scalability)。因为输出可以很方便的转化为下一个系统的输入,所以可以用串联、级联等多种方式连接不同的CEP系统,从而组合成一个复合系统,以应对复杂的业务需求。

复合事件处理过程包括:

  • 格式化:将事件获取模块得到的事件信息转化为内部处理的形式
  • 预处理:将事件按照字段内容进行处理
  • 模式侦测:将数个事件复合起来,找出复合事件
  • 事件发派:将复合事件发送到相应的处理模块
  • 执行动作:处理模型按照事件状况执行相应的动作

复合事件处理系统中的关键模块:

  1. EPL解析器:复杂事件处理系统中EPL语言被解析器解析为处理引擎能理解的语言(类SQL解析器)。
  2. 规则管理:管理EPL。
  3. 事件接入:通过SOA、ESB、MOM、读取日志等方式将消息接入。
  4. 预处理:将事件依据字段内容进行处理。
  5. CEP引擎:找出事件关联。
  6. 数据模型:维护内部数据。
  7. 事件发派:将已经发现的复合事件发派到负责处理的行动模块中。
  8. 行动模块:对复合事件采取行动。

此外,CEP系统的辅助工具有:

  • 规则制作工具
  • 报表输出工具
  • 实时仪表板

事件应该包含一些基本的要素:类型、发生事件以及更多的一些定义属性。通常需要关联多个事件进行分析处理,其中事件间的关系主要有5种:

  • 时间顺序关系:动作事件和动作事件之间,动作事件和状态变化事件之间,都存在时间顺序。
  • 聚合关系:动作事件和动作事件之间,状态事件和状态事件之间都存在聚合关系。即个体的聚合形成整体集合。
  • 层次关系:动作事件和动作事件之间,状态事件和状态事件之间都存在层次关系,即父类事件和子类事件的层次关系,从父类到子类是具体化,从子类到父类是泛化。
  • 依赖关系:事物的状态属性之间彼此的依赖关系和约束关系。
  • 因果关系:对于完整的动作过程,结果状态为果,初始状态和动作都可以视为原因。类比哲学上论述事物如何发展也是有两个因素的,一是内部本质,二是外部作用。

复合事件处理面临的挑战:

  • 减少应用存储数据(在分析数据之前)造成的延迟
  • 能够持续,实时地分析多个数据流
  • 能够关联不同数据流中的事件,从而发现新的相关情形
  • 能够迅速响应新发现的危险或机会
  • 能够迅速的将先前发现的规律应用到新的数据流分析模型中
  • 能够利用已有的应用开发能力快速开放新的高性能,高扩展度的应用
  • 确保应用和系统的连贯性。

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和实时计算有什么关系

实时计算也是一种框架,负责提供低延迟的计算服务,这样就给人一种“实时”的感觉,它本身并不关心被计算的是什么。大部分实时计算框架采用了流式(stream)计算的方法,是因为该方法可以很好地满足实时计算的设计需求。CEP和实时计算其实是属于两个不同领域的框架,但两者在业务和具体实现的需求下,紧密地结合到了一起。CEP只是提供了一种处理复合事件的框架,并没有对时效性做严格要求。我们也可以用传统技术实现CEP系统,只不过从事件发生到结果获取,再到采取行动,中间的延迟很大。而我们通常希望降低这种延迟,来获取更大的业务价值。实时计算恰恰提供了一种低延迟的计算服务,所以多数CEP系统在实现其计算模块时采用了实时计算的技术。

再者,如同前面提到的,CEP较佳的设计模式是管线架构设计。这种设计可以让事件像水一样流过各个处理模块,它和实时计算的流式计算非常相似。基于这个共同点,CEP和实时计算紧密地结合在一起。总的来说,我感觉两者的关系是:实时计算提供了一种底层的计算服务,CEP可以架构其上。

CEP应用案例:滴滴

实时营销

  • 地理围栏
  • 乘客线上冒泡1min内没有发单
  • 乘客下单后2min内没有被司机接单
  • 乘客在不同业务线之间的比价行为

异常检测(事后回溯->提前干预)

  • 司机开始计费后12小时还未更新成下一状态
  • 企业级乘客2min内连续重复发送3个以上订单
  • 同一用户5min内重复进线5次
  • 订单超时未支付
打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

Python短文本分类:LibShortText和TextG…

LibShortText LibShortText是一个开源的Python短文本(包括标题、短信、问题、句子等
1 min read

条件随机场(CRF)及CRF++安装使用

CRF简介 CRF是用来标注和划分序列结构数据的概率化结构模型。言下之意,就是对于给定的输出,标识序列Y和观测
10 min read

Python数据可视化之词云wordcloud

Wordcloud是一个生成词云的Python包,可以以词语为基本单位更加直观和艺术的展示文本,呈现效果类似标
2 min read

发表评论

电子邮件地址不会被公开。 必填项已用*标注