在flink流处理过程中,我们经常会遇到事件处理,例如双十一的时候,经过flink流处理的实时统计数据大盘,例如在业务系统的在线流风控系统等等业务场景,这时候我们一般会在flink中去读取流然后做我们想要操作的业务规则处理。大多数情况下我们一般都自己写相关的逻辑,但是在Flink中提供有CEP的模型来处理这个事情(在storm,spark等里面目前都没有成熟的CEP模型,只有Flink才有这个CEP模型)。所以这篇文章我们介绍下Flink的CEP模型。
下面我们详细介绍下Flink的CEP
什么是CEP
CEP,其实就是“复杂事件处理(Complex Event Processing)”的缩写;而Flink CEP,就是Flink实现的一个用于复杂事件处理的库(library)。复杂事件处理具体的过程是,把事件流中的一个个简单事件,通过一定的规则匹配组合起来,这就是“复杂事件”;然后基于这些满足规则的一组组复杂事件进行转换处理,得到想要的结果进行输出。CEP流程处理的三个步骤如下:
(1)定义一个匹配规则 (2)将匹配规则应用到事件流上,检测满足规则的复杂事件 (3)对检测到的复杂事件进行处理,得到结果进行输出
总的说来,Flink的CEP是针对流处理而言的,分析的是低延迟、频繁产生的事件流。它的主要目的,就是在无界流中检测出特定的数据结果。
CEP的模式
我们在第一步里面定义匹配规则,我们把他称为模式,每一个模式里面包含两部分,分别是:
每个简单事件的特征 简单事件之间的组合关系
在这里定义的组合关系是数据流中的两个连续性数据,即一前一后这种近邻的关系。所以对于CEP来说,他检测的的主要是连续性的实践或者不连续但是却是前后发生的时间。在Flink里面主要通过Pattern API进行操作。
CEP的应用场景
CEP这种应用场景比较多,例如我们前面举例的业务场景风控(《Flink流处理系列(七)使用flink的CEP复杂事件,实现用户登录的风控预警》),同时还有一些运维监控等场景,反正只要是连续性的数据处理这种场景,一般都适用。
还没有评论,来说两句吧...