这篇文章希望用浅显易懂的方式,介绍一个最近曝光率开始增加的技术领域:复合事件处理(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. 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 复合事件规则引擎表示例
最后来看最重要的两个模块:规则引擎与数据模型。现在的CEP规则引擎几乎都采用数据库表当做底层数据模型。事件会先进入数据库,一定时间(或数量)之后进行检查,若符合规则,就找到了复合事件,将此复合事件放进另一个表中。以图2为例,外部事件根据类型的不同,分别被放进A、B、C三个表中。A与B表可以侦测出复合事件,放进D中。C与D表可以侦测出复合事件,放进E表中。
图3 规则分解示例
图3所示,要找到一个有用的复合事件,必须把规则写成许多片段的规则,像是河流的上下游,渐渐汇集成最终有用的复合事件。有些CEP系统允许事件逆流而上,更具有使用上的弹性。
何时扫描数据库表?一般支持定量扫描或定时扫描。扫描事件的方式分滑动或跳跃(也称为批处理)。滑动会连续进行,跳跃则是将事件分批处理。一般来说,滑动方式较耗费计算资源。
支付宝总督CEP
总督系统是支付宝全新打造的一套CEP,与一般CEP最大的差异是,底层不是数据库,而是状态机。
其他CEP系统往往有这些缺点: 无法(或难以)描述相当复杂的复合事件;事件格式受到资料库表 schema的限制,无法自由扩展;需要大量的存储。
总督CEP以状态机引擎为核心,搭配独特的算法,完全解决这三个问题。
各种CEP应用蓄势待发
目前的CEP市场相对小,只有少数企业采用相关技术。随着对信息的重视,CEP的应用势必越来越广。通过这篇文章,希望让大家重视事件和使用CEP。我相信,只要使用得宜,CEP一定可以帮助企业在复杂多变的商业环境中找到机会、躲避威胁。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
理解CEP应用真正特点
IT领域的每个人都知道分析,以及借助大量历史数据作出更优业务决策的价值。这里应用程序的挑战在于“历史”这个限定词。
-
Java规则改进Android:大推理驯服大数据
在大数据、云计算和移动应用领域中对于新产品和新服务的需求呈指数形式增长,但其中一个关键,却常常忽视的领域是:推理。
-
SOA治理:重要的定制化是什么样的?
对于SOA治理来说,什么样的定制化是重要的,理由是什么?BAM?BI?CEP?还是其它?
-
大数据运动:数据与CEP并肩而行
行业专家指出大数据在休息时与大数据在运动时确实存在不同。为了促使它向前发展,外部的帮助是必要的。它需要哪些外部的帮助?