在实际应用中,还有一类需求是要检测以特定顺序先后发生的一组事件,进行统计或做报警提示,这就比较麻烦了。例如,网站做用户管理,可能需要检测“连续登录失败”事件的发生,这是个组合事件,其实就是“登录失败”和“登录失败”的组合;电商网站可能需要检测用户“下单支付”行为,这也是组合事件,“下单”事件之后一段时间内又会有“支付”事件到来,还包括了时间上的限制。
类似的多个事件的组合,我们把它叫作“复杂事件”。对于复杂时间的处理,由于涉及到事件的严格顺序,有时还有时间约束,我们很难直接用 SQL 或者 DataStream API 来完成。于是只好放大招——派底层的处理函数(process function)上阵了。处理函数确实可以搞定这些需求,不过对于非常复杂的组合事件,我们可能需要设置很多状态、定时器,并在代码中定义各种条件分支(if-else)逻辑来处理,复杂度会非常高,很可能会使代码失去可读性。怎样处理这类复杂事件呢?
所谓 CEP,其实就是“复杂事件处理(Complex Event Processing)”的缩写;而 Flink CEP,就是 Flink 实现的一个用于复杂事件处理的库(library)。那到底什么是“复杂事件处理”呢?就是可以在事件流里,检测到特定的事件组合并进行处理,比如说“连续登录失败”,或者“订单支付超时”等等。具体的处理过程是,把事件流中的一个个简单事件,通过一定的规则匹配组合起来,这就是“复杂事件”;然后基于这些满足规则的一组组复杂事件进行转换处理,得到想要的结果进行输出。
总结起来,复杂事件处理(CEP)的流程可以分成三个步骤:
(1)定义一个匹配规则
(2)将匹配规则应用到事件流上,检测满足规则的复杂事件
(3)对检测到的复杂事件进行处理,得到结果进行输出
输入是不同形状的事件流,我们可以定义一个匹配规则:在圆形后面紧跟着三角形。那么将这个规则应用到输入流上,就可以检测到三组匹配的复杂事件。它们构成了一个新的“复杂事件流”,流中的数据就变成了一组一组的复杂事件,每个数据都包含了一个圆形和一个三角形。接下来,我们就可以针对检测到的复杂事件,处理之后输出一个提示或报警信息了。
所以,CEP 是针对流处理而言的,分析的是低延迟、频繁产生的事件流。它的主要目的,就是在无界流中检测出特定的数据组合,让我们有机会掌握数据中重要的高阶特征。
CEP 的第一步所定义的匹配规则,我们可以把它叫作“模式”(Pattern)。模式的定义主要就是两部分内容:
当然,我们也可以进一步扩展模式的功能。比如,匹配检测的时间限制;每个简单事件是否可以重复出现;对于事件可重复出现的模式,遇到一个匹配后是否跳过后面的匹配;等等。
所谓“事件之间的组合关系”,一般就是定义“谁后面接着是谁”,也就是事件发生的顺序。我们把它叫作“近邻关系”。可以定义严格的近邻关系,也就是两个事件之前不能有任何其他事件;也可以定义宽松的近邻关系,即只要前后顺序正确即可,中间可以有其他事件。另外,还可以反向定义,也就是“谁后面不能跟着谁”。
CEP 做的事其实就是在流上进行模式匹配。根据模式的近邻关系条件不同,可以检测连续的事件或不连续但先后发生的事件;模式还可能有时间的限制,如果在设定时间范围内没有满足匹配条件,就会导致模式匹配超时(timeout)。
Flink CEP 为我们提供了丰富的 API,可以实现上面关于模式的所有功能,这套 API 就叫作“模式 API”(Pattern API)。
设定一些行为模式,可以对用户的异常行为进行实时检测。当一个用户行为符合了异常行为模式,比如短时间内频繁登录并失败、大量下单却不支付(刷单),就可以向用户发送通知信息,或是进行报警提示、由人工进一步判定用户是否有违规操作的嫌疑。这样就可以有效地控制用户个人和平台的风险。
利用 CEP 可以用预先定义好的规则,对用户的行为轨迹进行实时跟踪,从而检测出具有特定行为习惯的一些用户,做出相应的用户画像。基于用户画像可以进行精准营销,即对行为匹配预定义规则的用户实时发送相应的营销推广;这与目前很多企业所做的精准推荐原理是一样的。
对于企业服务的运维管理,可以利用 CEP 灵活配置多指标、多依赖来实现更复杂的监控模式
1.
Flink
CEP
是什么?2.
Flink
CEP
可以做哪些事情?3.
Flink
CEP
和流式处理有什么区别?4.
Flink
CEP
实现方式有哪些?
Flink
CEP
在
Flink
里面还是比较难以理解的。有的老铁甚至以为和
Flink
流式处理是差不多的。其实
Flink
CEP
跟流式处理确实有相似的地方。但是
Flink
CEP
处理的是流式数据,但是却并不是流式处理(
data
stream)。后面给大家详细讲解。
Flink
CEP
有的大家甚至不知道
CEP
是什么?
CEP
在
Flink
未产生以前,已经有
CEP
,并不是有了
Flink
才有
CEP
,我们这里重点是讲
Flink
CEP
。
CEP
本身的含义
本文根据 Apache
Flink
系列直播课程整理而成,由哈啰出行
大数据
实时平台资深开发刘博分享。通过一些简单的实际例子,从概念原理,到如何使用,再到功能的扩展,希望能够给计划使用或者已经使用的同学一些帮助。
主要的内容分为如下三个部分:
Flink
CEP
概念以及使用场景。
如何使用
Flink
CEP
。
如何扩展
Flink
CEP
。
Flink
CEP
概念以及使用场景
1.什么是
CEP
CEP
的意思是复杂事件处理,例如:起床–>洗漱–>吃饭–>上班等一系列串
摘要:本文整理自阿里云开发工程师耿飙&阿里云开发工程师胡俊涛,在 FFA 实时风控专场的分享。本篇内容主要分为四个部分:
Flink
CEP
介绍&新功能解读动态多规则支持与 Demo
Flink
CEP
SQL 语法增强未来规划■分享中的动态
CEP
和
CEP
SQL 新功能目前已在阿里云实时计算
Flink
版上线支持。Tips:点击「阅读原文」查看原文视频&演讲 pp...
一、
基本概念
1.
CEP
是什么
所谓
CEP
,其实就是“复杂事件处理(Complex Event Processing)”的缩写;而
Flink
CEP
,就是
Flink
实现的一个用于复杂事件处理的库(library)。
那到底什么是“复杂事件处理”呢?就是可以在事件流里,检测到特定的事件组合并进行处理,比如说“连续登录失败”,或者“订单支付超时”等等。
具体的处理过程是,把事件流中的一个个简单事件,通过一定的规则匹配组合起来,这就是“复杂事件”;然后基于这些满足规则的一组组复杂事件进行转换
复杂事件处理(Complex Event Processing,
CEP
)
FLink
CEP
是在
Flink
中实现的复杂事件处理(
CEP
)库
CEP
允许在无休止的事件流中检测事件模式,让我们有机会掌握数据中重要的部分
一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想要得到的数据-=-满足规则的复杂事件
Flink
Cep
是对复杂时间处理的一种手段,通过规则进行匹配,比如有 A B A C B C D是个消息,我们想获取 B C这种事件的消息,就可以通过定义相关规则来进行业务处理,通常我们会对C消息到达的时间有要求,比如在3s之内,那么我们获得超出3s已经匹配到的消息呢?
现在来讨论下
Flink
CEP
对于超时时间的处理
直接上demo(实现功能,匹配click后为buy事件的消息,事件限定为5s,同时获取超时时间外匹配的消息)
git地址https://github.com/fan-code/fl.
Flink
使用介绍相关文档目录
CEP
的全称为Complex Event Processing,中文翻译为复杂事件处理。光看字面意思解释还是很难理解。究竟何为“复杂事件”?通常我们使用
Flink
处理数据流的时候,只是对每个到来的元素感兴趣,不关注元素之间的关系。即便是有也仅仅是使用有状态算子而已。现在有一种需求,我们需要关注并捕获一系列有特定规律的事件,比方说用户登录,转帐,然后退出(ABC事件连续发生),或者是比如机房连续10次测温均高于50度(A{10,}),我们采用传统方式写
Flink
程序就比较困难。
import org.apache.
flink
.api.common.typeinfo.TypeInformation;
import org.apache.
flink
.
cep
.
CEP
;
import org.apache.
flink
.
cep
.PatternFlatSelectFu...
文章目录1. 案例-离厂超时预警 实现思路1.1 定义一个刷卡事件类1.2 定义一个事件模式(Pattern)1.3 Build pattern stream,模式匹配输出1.4 Use side output get timeout stream,获取超时输出流2. 其他可参考案例2.1 案例-订单超时统计2.2 案例-
CEP
实现空气质量检测2.3 案例-
Flink
CEP
实现超时状态监控
1. 案例-离厂超时预警 实现思路
利用
Flink
CEP
的实现思路,暂时没考虑其他的干扰条件。假定只刷卡 出
Flink
CEP
(Complex Event Processing)是在
Flink
上层实现的复杂事件处理库
将数据流通过一定的规则匹配,然后输出用户想得到的数据,
-底层通过equals()和hashCode()方法来比较和匹配事件
2、使用场景
对用户异常行为模式、数据异常流向实时检测
向特定行为的用户进行实时的精准营销
监控设备运行参数,灵活配置多指标的发生规则
2、模式(Pattern)
模式的概念
处理事件的规则,被叫做“模式”(Pattern)
(1)定义
复合事件处理(Complex Event Processing,
CEP
)是一种基于动态环境中事件流的分析技术,事件在这里通常是有意义的状态变化,通过分析事件间的关系,利用过滤、关联、聚合等技术,根据事件间的时序关系和聚合关系制定检测规则,持续地从事件流中查询出符合要求的事件序列,最终分析得到更复杂的复合事件。
(2)特征
CEP
的特征如下: