复杂事件处理
复杂事件处理(CEP,Complex Event Processing)是一种基于动态环境中事件流的分析技术,事件在这里通常是有意义的状态变化,通过分析事件间的关系,利用过滤、关联、聚合等技术,根据事件间的时序关系和聚合关系制定检测规则,持续地从事件流中查询出符合要求的事件序列,最终分析得到更复杂的复合事件,主要用于网络诈欺识别等防止犯罪,银行等金融行业防止,以及风险规避和营销决策等.
复杂事件处理面临多方面的挑战:
- 减少应用存储数据(在分析数据之前)造成的延迟
- 能够持续,实时地分析多个数据流
- 能够关联不同数据流中的事件,从而发现新的相关情形
- 能够迅速响应新发现的危险或机会
- 能够迅速的将先前发现的规律应用到新的数据流分析模型中
- 能够利用已有的应用开发能力快速开放新的高性能,高扩展度的应用
- 确保应用和系统的连贯性。
事件处理语言
事件处理语言(EPL,Event processing language)用于系统中制定和查询感兴趣的事件序列,通常是类SQL的语句,从SQL语句中扩展而来.
事件关系
事件应该包含一些基本的要素:类型、发生事件以及更多的一些定义属性
通常需要关联多个事件进行分析处理,其中事件间的关系主要有5种:
时间关联
空间关联
依赖关系
事物的状态属性之间彼此的依赖关系和约束关系。因果关系
事件处理过程
复杂事件处理过程包括:
- 格式化:将事件获取模块得到的事件信息转化为内部处理的形式
- 预处理:将事件按照字段内容进行处理
- 模式侦测:将数个事件复合起来,找出复合事件
- 事件发派:将复合事件发送到相应的处理模块
- 执行动作:处理模型按照事件状况执行相应的动作
以下是复杂事件处理系统中的关键模块组成图(来自《深入浅出复合事件处理》),
- EPL解析器:复杂事件处理系统中EPL语言被解析器解析为处理引擎能理解的语言(类SQL解析器)。
- 规则管理:管理EPL。
- 事件接入:通过SOA、ESB、MOM、读取日志等方式将消息接入。
- 预处理:将事件依据字段内容进行处理。
- CEP引擎:找出事件关联。
- 数据模型:维护内部数据。
- 事件发派:将已经发现的复合事件发派到负责处理的行动模块中。
- 行动模块:对复合事件采取行动 。
如何评价一个CEP平台:
- 开发工具中的编程模型,是否能吸引众多不同类型的开发人员?
- 是否提供了高可用性和高安全性?
- 是否可以部署在多个使用阵列配置的服务器?
- 是否提供了监视功能?
- 其引擎是否可以易于扩展,从而来支持公司特有的高级的逻辑?
- 是否有恢复机制,即使一旦服务器故障,也可以防止数据丢失?
- 进出处理引擎的消息传递,其机制是否可靠?
- 它同数据库以及其他系统能否很好的集成?
- 这个平台是否支持连续型实时数据管理的各个生命周期,包括分析,存储,建模和一个新的实时分析应用的部署?
事件驱动架构
事件驱动架构(Event-Driven Architecture,EDA) 基于消息传递,现在主要是异步通讯的消息队列的架构,依据“发布/订阅”模式,通过特定模式来对业务事件作出响应,耦合度较低.
面向服务架构
面向服务架构 (Service-Oriented Architecture, SOA) 基于“请求/响应”的形式
下面这幅图可以较好地体现基于SOA和EDA两种体系结构的差异处,SOA更多地是面向垂直系统的请求和响应处理,EDA则是应对横向的系统通.
资料来源:
[1]. TT SOA 技术专题之“复杂事件处理手册”
[2]. 《事件处理中间件原理和应用》
[3]. 《深入浅出复合事件处理》
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可。