最近做项目,涉及到一些关于CEP的知识。总结一下。
esper的官网 http://www.espertech.com/
1.1介绍CEP和事件流分析
Esper引擎是为了满足对事件进行分析并做出反应等这些应用需求而产生的。这些应用要求事实或接近事实处理事件(或消息)。有时候是为了应对复杂事件处理(CEP)和事件流分析的。关键要考虑这些类型应用的(高)吞吐量、(低)响应时间和需求逻辑的复杂程度(复杂计算)。esper可以用在股票系统、风险监控系统等等要求实时性比较高的系统中。
1.2 CEP和关系数据库
关系型数据库不适合每秒成百上千的数据量的查询
内存数据库与比传统的关系数据库相比,有更好的查询性能,更适合处理CEP应用。
1.3 专注于CEP的Esper 引擎
这个Esper引擎工作起来有点像数据库的倒置。Esper 引擎允许应用存储查询并运行数据通过,来代替存储数据并且执行查询存储数据的工作方式。esper提供两种机制来处理事件:
1、Esper提供了一个事件模式语言去指定基于表达式的事件模式匹配。这个模式匹配引擎是通过一个状态机来实现的。这个事件处理的方法匹配期望存在的队列或者不存在的事件或者事件的组合。它包括以时间为基础的各个事件之间的关系。
2、Esper还提供事件流查询。这个样可以使事件流分析CEP应用的需求。事件流查询提供窗口、聚合、连接和分析的函数来处理事件流。这些查询是通过EPL语句来实现的。EPL用于视图。视图表示需要将构造的数据放入到一个事件流中并且去驱动数据的流动。在数据流动的过程中对数据进行处理,来得到我们最后所需要的结果。
下面是在网上找到的资料,觉得总结的挺好的:
Esper提供这两种方法作为互补是通过相同的API来实现的