相关文章推荐
干练的打火机  ·  Original research: ...·  3 月前    · 
大气的扁豆  ·  fetchall与fetchone - 简书·  1 年前    · 

在实际应用中,还有一类需求是要检测以特定顺序先后发生的一组事件,进行统计或做报警提示,这就比较麻烦了。例如,网站做用户管理,可能需要检测“连续登录失败”事件的发生,这是个组合事件,其实就是“登录失败”和“登录失败”的组合;电商网站可能需要检测用户“下单支付”行为,这也是组合事件,“下单”事件之后一段时间内又会有“支付”事件到来,还包括了时间上的限制。

类似的多个事件的组合,我们把它叫作“复杂事件”。对于复杂时间的处理,由于涉及到事件的严格顺序,有时还有时间约束,我们很难直接用 SQL 或者 DataStream API 来完成。于是只好放大招——派底层的处理函数(process function)上阵了。处理函数确实可以搞定这些需求,不过对于非常复杂的组合事件,我们可能需要设置很多状态、定时器,并在代码中定义各种条件分支(if-else)逻辑来处理,复杂度会非常高,很可能会使代码失去可读性。怎样处理这类复杂事件呢?

Flink 为我们提供了专门用于处理复杂事件的库——CEP,可以让我们更加轻松地解决这类棘手的问题。这在企业的实时风险控制中有非常重要的作用。

CEP 是什么

所谓 CEP,其实就是“复杂事件处理(Complex Event Processing)”的缩写;而 Flink CEP,就是 Flink 实现的一个用于复杂事件处理的库(library)。那到底什么是“复杂事件处理”呢?就是可以在事件流里,检测到特定的事件组合并进行处理,比如说“连续登录失败”,或者“订单支付超时”等等。具体的处理过程是,把事件流中的一个个简单事件,通过一定的规则匹配组合起来,这就是“复杂事件”;然后基于这些满足规则的一组组复杂事件进行转换处理,得到想要的结果进行输出。
总结起来,复杂事件处理(CEP)的流程可以分成三个步骤:
(1)定义一个匹配规则
(2)将匹配规则应用到事件流上,检测满足规则的复杂事件
(3)对检测到的复杂事件进行处理,得到结果进行输出

在这里插入图片描述
输入是不同形状的事件流,我们可以定义一个匹配规则:在圆形后面紧跟着三角形。那么将这个规则应用到输入流上,就可以检测到三组匹配的复杂事件。它们构成了一个新的“复杂事件流”,流中的数据就变成了一组一组的复杂事件,每个数据都包含了一个圆形和一个三角形。接下来,我们就可以针对检测到的复杂事件,处理之后输出一个提示或报警信息了。

所以,CEP 是针对流处理而言的,分析的是低延迟、频繁产生的事件流。它的主要目的,就是在无界流中检测出特定的数据组合,让我们有机会掌握数据中重要的高阶特征。

模式(Pattern)

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 的特征如下: