flink1.12.x FlinkCEP介绍

说明

FlinkCEP,复合事件处理(Complex Event Processing,CEP),是在Flink 上层实现的复杂事件处理库。

可以在事件流中 检测出特定的事件模型

官网:
https://nightlies.apache.org/flink/flink-docs-release-1.13/zh/docs/libs/cep/

一句话理解

FlinkCEP可以用简单的方式,处理 复杂事件

这类事件,用底层api 也可以实现,但复杂。
用 Flink table api 和 SQL可能无法实现

应用场景

  • 连续登录失败三次,开始做额外处理,如:锁定账户,不允许登录
  • 订单支付超时,超时15分钟,订单取消,不能再支付

上面这些场景,用 底层api 能实现,但实现需要编写大量代码,使用状态等。
用 Flink table api 和 Flink SQL,实现起来也复杂

主要组件

Flink为CEP提供了专门的Flink CEP library,包含如下组件:

  • Event Stream
  • Pattern定义
  • Pattern检测
  • 生成Alert

编写流程

  1. 定义一个 匹配规则
  2. 将 匹配规则 应用到事件流上,检测满足规则的复杂事件
  3. 对检测到的复杂事件进行处理,得到结果进行输出

执行流程

  • 输入:一个或多个简单事件构成的事件流。如:登录成功、登录失败,上图用不同的形状表示

  • 处理:识别流中符合规则的数据,这些数据构成了一个新的 复杂事件流。上图的规则是:一个方形,之后紧跟 一个圆形

  • 输出:满足规则的复杂事件。上图输出都是:一个方形,之后紧跟 一个圆形

总结

CEP用于分析 低延迟、频繁产生 的事件流。在无界流中检测出特定的数据组合

CEP支持在流上进行 模式匹配,根据模式的条件不同,分为:连续的条件 或 不连续的条件;
模式的条件允许有 时间的限制,当条件范围内没有达到满足的条件时,会导致模式匹配超时。

市场上有多种CEP的解决方案,例如Spark、Samza、Beam等,但他们都没有提供专门的库支持。然而,Flink提供了专门的CEP库。

参考:
https://blog.csdn.net/mengxianglong123/article/details/124123750
https://cloud.tencent.com/developer/article/1683066


原文出处:/show_1IX4GEbIRsdf.html