轻松理解复合事件处理

日期: 2010-09-09 作者:蔡学镛 来源:TechTarget中国 英文

  这篇文章希望用浅显易懂的方式,介绍一个最近曝光率开始增加的技术领域:复合事件处理(Complex Event Processing,CEP)。有人将它翻译成“复杂事件处理”,但我认为“复合”或许比“复杂”更恰当一些。

  人肉CEP

  什么是复合事件处理?先看一些生活化的例子。其实你每天都在做人肉CEP,只是你不知道而已。所谓人肉CEP,就是通过各种感知器官,将感觉汇集到大脑,经过综合判断得到一个更具有意义的事件。在这个事件被判定出来之后,你可能会想要为此采取因应之道。

  为加强说明,我推出了三个人肉CEP范例:个人版、企业版、家庭版。

  先看个人版!皮肤感觉温度下降是一个基础事件(Base Event)或称简单事件(Simple Event)。耳朵听到远方传来的雷声、眼睛看到闪电,都是基础事件。集合以上基础事件,得到一个复合事件:快要下雨了。于是,你的因应之道是:收衣服或者出门要带伞。

  接着看企业版!身为公司领导,你看到员工经常有一堆事没做完,居然还在上班时间上网偷菜。于是你得到一个复合事件,就是:这是一个不负责任的员工。你的处理方式就是将他辞退。

  最后看家庭版!这个版本有点儿童不宜。老公老说要加班,身为老婆的你心里狐疑:哪有公司这么常加班的?回家后发现他在外面洗过澡,身上有肥皂味道,但他又否认。帮他整理衣服发现衣服上有一根长头发,而且不是你的。最糟糕的是,他对你性趣缺缺。帮老公接手机时,电话那头神秘不出声。因为这种种迹象,你得到一个复合事件:老公有外遇了。不过,CEP有误报警的可能。为了避免误报警导致夫妻间无谓的争端,你应该先找侦探跟踪老公,求证外遇是否属实,再决定作何反应。

  看了这些例子,现在应该能了解CEP系统的大致作用了:先捕获各种细微的事件(基础事件),然后通过分析整理,找出更有意义的事件(复合事件),最后决定采取什么行动。其中事件的分析整理以找出更有意义的事件,正是CEP的核心,也是最困难的地方。

  IT-CEP

  下面我们来看看IT领域的CEP。

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

  大致上,CEP可以帮助我们:

  •   了解趋势
  •   发现机会
  •   避免威胁

  业界普遍将CEP应用在:

  •   商业活动监控(BAM)
  •   发掘群众智能
  •   避免网络攻击
  •   预防金融犯罪
  •   实施系统动态校验
  •   其他……

  支付宝大量使用CEP用于防止犯罪(如网络诈欺、网络攻击、洗钱)和资金损失,并了解各种业务的现状、协助营销。支付宝使用外部厂商的CEP系统,也自行开发CEP系统。

  目前知名的CEP产品来自Tibco、IBM、Oracle、StreamBase、Sybase等。微软也即将推出名为StreamInsight的CEP产品。

  很有意思的是StreamBase与StreamInsight这两个CEP产品名称,刚好是CEP的三个关键字:Stream、Base、Insight。同时具备这三点才能算是CEP。这三个关键字的意义解释如下:

  Stream

  – 连续不间断

  – 实时处理

  Base

  – 资料量大

  – 数据库

  Insight

  – 有用的信息

  – 智能

  CEP关键技术

  CEP的关键过程包括:

  •   格式化:将外部事件转成内部能处理的格式;
  •   预处理:将事件依据字段内容进行处理;
  •   模式侦测:将数个事件之间关联起来,找出复合事件;
  •   事件发派:将复合事件发送到相应的处理模块;
  •   报警:对严重的事件进行处置。

图1 CEP关键模块

图1 CEP关键模块

  如图1所示,CEP系统中比较关键的模块有八个,分别是:

  1. EPL解析器:在CEP系统中,描述如何将基础事件合成复合事件的语言,称为EPL(事件处理语言)。EPL需要被解析成CEP引擎能理解的语言。

  2.  规则管理:管理EPL。

  3. 事件接入:通过SOA、ESB、MOM、读取日志等方式将消息接入。

  4. 预处理:将事件依据字段内容进行处理。

  5. CEP引擎:找出事件关联。

  6. 数据模型:维护内部数据。

  7. 事件发派:将已经发现的复合事件发派到负责处理的行动模块中。

  8. 行动模块:对复合事件采取行动 。

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

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

  上述的八个CEP关键模块中,有四个值得详细说明:EPL解析器、预处理模块、CEP规则引擎、数据模型。

  EPL是用来描述复合事件的语言,会被EPL解析器处理,成为内部可以使用的规则。EPL许多都扩展自SQL(微软的扩展自LINQ),底层的数据模型都是数据库,所以EPL解析器做的就是将EPL转成SQL,通常会使用到数据库的Trigger、Stored Procedure等机制。

  预处理模块会将事件送进CEP引擎之前预先做处理,包括字段过滤、字段填入、事件过滤、事件分流、事件合流等。请注意:预处理过程一定需要读取事件内容,然后根据事件内容做处理(但不会将事件关联起来,因为这是CEP引擎的工作)。建议这个模块内部采用管线(pipeline)的架构方式,使用上会更灵活。

图2 复合事件规则引擎表示例

  图2 复合事件规则引擎表示例

  最后来看最重要的两个模块:规则引擎与数据模型。现在的CEP规则引擎几乎都采用数据库表当做底层数据模型。事件会先进入数据库,一定时间(或数量)之后进行检查,若符合规则,就找到了复合事件,将此复合事件放进另一个表中。以图2为例,外部事件根据类型的不同,分别被放进A、B、C三个表中。A与B表可以侦测出复合事件,放进D中。C与D表可以侦测出复合事件,放进E表中。

图3 规则分解示例

  图3 规则分解示例

  图3所示,要找到一个有用的复合事件,必须把规则写成许多片段的规则,像是河流的上下游,渐渐汇集成最终有用的复合事件。有些CEP系统允许事件逆流而上,更具有使用上的弹性。

  何时扫描数据库表?一般支持定量扫描或定时扫描。扫描事件的方式分滑动或跳跃(也称为批处理)。滑动会连续进行,跳跃则是将事件分批处理。一般来说,滑动方式较耗费计算资源。

  支付宝总督CEP

  总督系统是支付宝全新打造的一套CEP,与一般CEP最大的差异是,底层不是数据库,而是状态机。

  其他CEP系统往往有这些缺点: 无法(或难以)描述相当复杂的复合事件;事件格式受到资料库表 schema的限制,无法自由扩展;需要大量的存储。

  总督CEP以状态机引擎为核心,搭配独特的算法,完全解决这三个问题。

  各种CEP应用蓄势待发

  目前的CEP市场相对小,只有少数企业采用相关技术。随着对信息的重视,CEP的应用势必越来越广。通过这篇文章,希望让大家重视事件和使用CEP。我相信,只要使用得宜,CEP一定可以帮助企业在复杂多变的商业环境中找到机会、躲避威胁。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐