复杂事件处理

复杂事件处理是一种新兴的基于事件流的技术,它将系统数据看作是不同类型的事件,事件在这里通常是有意义的状态变化,通过分析事件间的关系,利用过滤、关联、聚合等技术,根据事件间的时序关系和聚合关系定制检测规则,持续地从事件流中查询出符合要求的事件序列,最终分析得到更加复杂的复合事件。CEP适合的场景包括实时风险管理、实时交易分析、网络欺诈、网络攻击、市场趋势分析等等。

复杂事件处理的特征:

复杂事件处理面临多方面的挑战:

复杂事件处理引擎

复杂事件处理一般都采用非确定性有限自动机NFA变体模型来处理事件。典型的复杂事件处理系统有SASE,Cayuga以及Esper等。

SASE系统采用了一种基于本地序列操作符以及管道查询的数据流模型,使用关系运算符来定义随后到来的序列,SASE采用了非确定性有限自动机来获取序列事件。SASE提供了一种由EVENT、WHERE、以及WITHIN等组成的规则描述语言,使用逻辑操作符和序列操作来描述事件间的关系。但是SASE语言缺少对聚集操作的支持。SASE+则扩展了SASE语言,提供了迭代和聚集操作的支持。与其他系统不同,SASE不仅会报告用户感兴趣的查询结果,而且会报告匹配此查询的所有事件,这在很大程度上增加了查询的复杂度。SASE的主要局限性在于不能处理层状结构的复杂事件类型,也就是一个查询的结果不能用作另一个查询的输入。