一、什么是复杂事件处理(CEP Complex Event Processing)
复杂事件处理(CEP)是事件处理,它结合来自多个来源的数据来推断表明更复杂情况的事件或模式。复杂事件处理的目标是识别有意义的事件(例如机会或威胁)并尽快响应它们。 CEP旨在发现情况。CEP不是通用应用程序代码容器或分布式处理平台。CEP通过提供声明性语言(事件处理语言,EPL)或其他抽象来帮助检测情境,从而使情境检测更容易,更快捷。 1、CEP是有状态分析,因为为了检测情况,需要记住某些事情。例如,对于简单计数,我们需要记住当前计数,对于模式匹配,我们需要记住部分匹配的模式。对于该示例,当前计数和部分匹配的模式是要保持的状态。 2、必须在发生情况时立即检测到情况。检测延迟是事件到达和检测到情况之间的时间。CEP的目标是检测延迟明显低于1秒。通常需要1纳秒至1毫秒之间的检测延迟,并且可以通过CEP实现。 3、CEP处理大量的小数据点(事件)到达。其中许多事件可能会导致状态发生变化。因此,状态可以经常更新和快速变化。 4、CEP分析意味着状态不是事件本身,而是从事件中获得的信息。例如,当简单计数时,派生信息是计数,并且不记住对计数有贡献的事件本身。例如,当模式匹配时,事件到达的事实是状态,但是可能不需要记住有助于模式匹配的事件。 5、CEP对时间流逝感兴趣,可以是事件时间或其他时间。国家可以根据时间的推移而改变和到期。 6、事件(Event)一般情况下指的是一个系统中正在发生的事,事件可能发生在系统的各个层面上,它可以是某个动作,例如客户下单,发送消息,提交报告等,也可以是某种状态的改变,例如温度的变化,超时等等。通过对这些事件进行分析,可以提取出其中有效的信息。 二、CEP处理应用在哪里 CEP的目的是分析事件并找到感兴趣的情况。CEP检测并获取信息,因此您可以立即意识到情况并以最佳方式做出反应。 要检测的示例情况是:只要在过去15天内至少有三个大额现金存款,就会产生可疑帐户。 - “检测”是关于原始事件,例如现金存款事件。
- “推导”是关于这种情况,即“做了什么事?”,例如,有一个可疑帐户。
- “决定”是关于做什么的决定,例如决定风险评分或确定另一个行动方案
- “Do”是动作,例如打开调查的动作
“检测”和“衍生”是CEP的责任。CEP是时间和事件驱动的,具有连续性。它处理预定义但开放式事件的流(历史或当前到达),不同的事件类型以及相关的事件数据,并且可能具有多个输入源。 “决定”有时由决策管理工具或规则引擎处理,因为它们的优势在于决策表和基于事实的分析。决策管理工具通常是请求驱动的,通过一次执行运行事实分析来寻求当前业务决策的结论。 “Do”有时由业务流程或工作流工具处理。 所以通常情况下,CEP常常用于金融交易,欺诈识别和流程监控。需要识别,理解并快速响应数据事件流种的模式。 但是要实现一个CEP引擎,需要考虑的事情包括: (1)吞吐量; (2)低延迟,从事件到达到事件被处理,不能有太大的延迟; (3)复杂的逻辑处理,CEP需要能够对事件进行较为复杂的操作,例如,检测事件之间的相关性,过滤,加窗,连接等。 三、Esper简介 Esper是一个开源的复杂事件处理引擎,它的目的是让用户能够通过它提供的接口,构建一个用于处理复杂事件的应用程序。 Esper主要包括了三个部分:Input adapter,Esper engine,Output adapter。 四、Esper与其他CEP产品比较 Esper是一种开源语言,编译器和运行时,可在GNU GPL许可证下使用(GPL也称为GPL v2)。Esper的开源特性有助于定制事件处理语言和其他社区驱动的功能。 Esper是流分析的唯一编译器,可生成100%字节代码。 Esper和NEsper是用Java和C#编写的可嵌入组件,因此适合集成到任何Java进程或基于.NET的进程,包括J2EE应用程序服务器或独立Java应用程序。Esper和NEsper本身并不是服务器,而是设计用于连接任何类型的服务器,包括市场标准的JEE服务器(weblogic,websphere,jboss等),服务总线或轻量级解决方案(基于OSGi,网格等),以及基于Microsoft的.Net技术。NEsper适用于桌面终端用户站。 该模型提供的其他优点是组件可以在开发环境中独立运行,使开发和测试更加容易,而对于目标生产环境,这使得它更适合您真正需要或可能已经到位的。端到端性能和延迟也得到增强,因为您的应用程序可能不需要将事件传输到专用远程服务器进程,但可以在事件源处理事件,从而节省编组/解组/网络。
|