复合事件处理CEP简介

标签: 程序 | 发表时间:2019-01-18 22:31 | 作者:标点符
出处:https://www.biaodianfu.com

什么是复合事件处理?

这是一个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次
  • 订单超时未支付

The post 复合事件处理CEP简介 appeared first on 标点符.

相关 [复合 事件 cep] 推荐:

复合事件处理CEP简介

- - 标点符
这是一个IT事件爆发的时代,各种IT系统之间或系统内部,每天产生大量事件. 系统在关键点打日志、系统之间交流信息,都是事件. 但我们对这些事件往往视而不见,当成垃圾一股脑儿全扔了. 其实只要处理得当,垃圾也可以变成资源. 复合事件处理(CEP,Complex Event Processing)是一种基于动态环境中事件流的分析技术,事件在这里通常是有意义的状态变化,通过分析事件间的关系,利用过滤、关联、聚合等技术,根据事件间的时序关系和聚合关系制定检测规则,持续地从事件流中查询出符合要求的事件序列,最终分析得到更复杂的复合事件,主要用于网络诈欺识别等防止犯罪,银行等金融行业防止,以及风险规避和营销决策等.

复合索引性能问题初探

- - CSDN博客推荐文章
在《品悟性能优化》一书,4.4.3章节里介绍了复合索引的两个特点:前缀性,可选性. 何为前缀性,该书阐述为排除skip scan index的情况,约束条件如果不包含复合索引的第一列,则该复合索引不会被用到;何为可选性,该书阐述为字段值越多,可选性越强,定位记录越少,查询效率越高. 即查询返回记录少的列应该放在复合索引的前面.

hadoop复合键排序使用方法

- - CSDN博客云计算推荐文章
在hadoop中处理复杂业务时,需要用到复合键,复合不同于单纯的继承Writable接口,而是继承了WritableComparable接口,而实际上,WritableComparable接口继承了Writable和Comparable接口,如果只需要使用某一个类作为传值对象而不是作为key,继承Writable接口即可.

backbone 之事件(events)

- - 博客园_首页
  最近用 backbone 做了一个项目,加深了对前端mvc理解. 一定要应用的熟练后,了解其思想后,再去阅读源码. 想写写自己对backbone的感悟. 接下来第一步就是backbone的event.   backbone的event 是其核心.  当我们user调用create 就会触发change事件.

测试touch事件

- - Kejun's Blog
进入触屏时代意味一切要对触屏友好. 今天仅仅测试了ios6,其它版本包括android还不清楚差别有多大. 看了PPK的touch兼容表(http://www.quirksmode.org/mobile/tableTouch.html),深感刚准备告别ie6,又迎来了一个新的混乱时代,苦逼的前端工程师们永远摆脱不了兼容的魔咒.

复合索引的前导列如何选择?

- - CSDN博客数据库推荐文章
     在表上建复合索引是常见的事情,那索引中键值的顺序是什么呢. 通过下面的实验可以得出三个结论:. --制造实验数据,并收集统计信息. 如果是等值查询,那字段无先后之分,结合着索引的存储结构,索引存储的是键值和rowid,复合索引就是存储两个键值,如果是等值查询,可以看作是一个值,跟单个字段索引查询一样.

hibernate insert 时 无主键使用复合主键

- -
复合主键,由多个字段组成主键,例如,使用一个用户的firstname和lastname组成主键. 可以通过两种方式确定主键,一种是基于实体类的复合主键,另一种是通过定义主键类来实现. 不管通过哪种方式,复合主键都需要实现equals方法和hashcode方法,以作为不同数据之间是别的标志. 一.基于实体类属性的复合主键.

Jquery手动触发事件

- - 博客园_首页
    废话不多说,直接贴代码:.     如果想触发一个id为input的文本框的blur事件,则可以这样写:.     相类似,如果想调用input的click事件,则可以这样写:.

js中的事件委托

- - JavaScript - Web前端 - ITeye博客
1,什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件. 也就是:利用冒泡的原理,把事件加到父级上,触发执行效果. 我们可以看一个例子:需要触发每个li来改变他们的背景颜色.

JavaScript与HTML交互——事件

- - 博客园_首页
JavaScript和HTML的交互是通过事件实现的. JavaScript采用异步事件驱动编程模型,当文档、浏览器、元素或与之相关对象发生特定事情时,浏览器会产生事件. 如果JavaScript关注特定类型事件,那么它可以注册当这类事件发生时要调用的句柄. 事件流描述的是从页面中接收事件的顺序,比如有两个嵌套的div,点击了内层的div,这时候是内层的div先出发click事件还是外层先触发.