Flink CEP 入门

1.复杂事件处理

大数据应用领域存在业务逻辑非常复杂的应用系统,比如,一个应用要检测特定顺序先后发生的一组事件,对事件组进行分析或报警提示,若使用SQL 或者DataStream API 处理这类应用,过程相对来说比较复杂。例如,针对用户登录的应用场景,需要检测用户连续登录失败事件的发生。一次登录失败可以定义为一个事件,两次登录失败就可以定义为两个事件的组合。电商系统需要检测用户"下订单和支付"的行为,这也可以定义为组合事件,即"下订单"和"支付"两个事件的组合,这两个事件之间存在着时间先后的关系,"下订单"事件在"支付"事件之前完成,电商应用系统可能还会约定"下订单"事件和"支付"事件的时间限制,也就是说,如果"下订单"后超过了约定的时间没有"支付","支付"就失效了。类似这样多个事件的组合称为"复杂事件"。对于复杂事件的处理,由于涉及事件的严格顺序,有时还有时间约束,很难直接用FlinkSQL 或者DataStream API 来完成,即使使用这些API 可以实现复杂事件的处理,实现的复杂度也会非常高,程序的可维护性也相对比较差。对于这类复杂事件的处理,Flink 提供了专门用于处理复杂事件的库CEP,通过使用CEP 提供的API 进行开发,可以比较容易地解决这类问题。

2.CEP 简介

Flink CEP 是Flink 提供的用于处理复杂事件的库。CEP 是针对流处理而言的,分析的是低延迟、频繁产生的事件流,主要目的是在无界流中检测特定的数据组合,以便进行后续处理。"复杂事件处理"可以在事件流中检测到特定的事件组合并进行处理,例如,"连续登录失败"或者"订单支付超时"这样的事件组合。处理过程是把事件流中的一个个简单事件,通过一定的规则匹配组合起来,构成"复杂事件",然后基于这些满足规则的一组组复杂事件进行转换处理,得到结果并输出。复杂事件处理的流程可以分成如下3 个步骤。

(1)定义复杂事件的一个匹配规则。

(2)将匹配规则应用到事件流上,检测满足规则的复杂事件。

(3)对检测到的复杂事件进行处理,得到结果并输出。

图 7-1 展示了复杂事件处理的示意图。输入的事件流是不同的几何形状,如圆形、矩形和三角形。然后定义匹配规则"在圆形后面紧跟着三角形",现在将这个规则应用到输入的事件流上,就可以检测到3 组匹配的复杂事件,它们构成了一个新的"复杂事件流",事件流中的数据就变成了一组一组的复杂事件,每个事件组合都包含了一个圆形和一个三角形。接下来就可以针对检测到的复杂事件进行后续处理,例如,输出一个提示信息或者报警信息。

3.模式

基于Flink CEP 开发程序的第一步是定义事件的匹配规则,这个匹配规则叫作"模式"(Pattern)。模式主要包括如下两部分内容。

● 简单事件的特征。例如,以上提到的不同形状的几何图形,不同的形状就是不同的特性。

● 简单事件之间的组合关系。事件之间的组合关系主要是指"近邻关系",也就是说,一个事件跟着另一个事件出现的情况是否存在。"近邻关系"可以定义为严格的近邻关系,也可以定义为宽松的近邻关系。严格的近邻关系是指两个事件之间不存在任何其他事件,非严格的宽松的近邻关系是指两个事件之间允许存在其他事件,两个事件只需前后顺序正确就可以。除了近邻关系以外,还可以扩展模式的功能,例如,匹配检测的时间限制;每个简单事件是否可以重复出现;对于事件可重复出现的模式,遇到一个匹配模式后是否跳过后面的匹

Flink CEP 主要用于实时流数据的分析处理。Flink CEP 可以帮助在复杂的事件流中找出那些有意义的事件组合,进而近实时地分析判断、输出信息或报警。Flink CEP 在企业项目的风控控制、用户画像和运维监控中都有非常重要的应用。

● 风险控制:设定行为模式对用户的异常行为进行实时监测。当用户行为符合异常行为模式,例如短时间内频繁登录失败、在电商网站大量下订单却不支付,就可以向用户发送报警提示,可以有效地控制用户和平台的风险。

● 用户画像:利用预先定义好的模式,对用户的行为轨迹进行实时跟踪,从而检测出具有特定行为习惯的用户,画出相应的用户画像。基于用户画像可以进行精准营销,即向行为匹配预定义规则的用户实时发送相应的营销推广。

● 运维监控:对于企业服务的运维管理,可以利用CEP 灵活配置多指标、多依赖来实现更复杂的监控模式。

相关推荐
LonelyProgramme36 分钟前
Flink定时器
大数据·flink
core5122 小时前
Flink SQL Cookbook on Zeppelin 部署使用
flink·notebook·zeppelin·示例·手册
道一云黑板报19 小时前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
darkdragonking19 小时前
OpenEuler 22.03 安装 flink-1.17.2 集群
flink·openeuler
core51219 小时前
flink sink kafka
flink·kafka·sink
节点。csn19 小时前
flink集群搭建 详细教程
大数据·服务器·flink
goTsHgo19 小时前
Flink 的并行度配置低于Kafka 分区数会出现的问题
flink
Ekine1 天前
【Flink-scala】DataSet编程模型介绍及数据源
人工智能·flink·scala
张伯毅1 天前
Flink SQL 支持 kafka 开启 kerberos 权限控制.
sql·flink·kafka
大圣数据星球1 天前
Fluss 写入数据湖实战
大数据·设计模式·flink