说明
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
编写流程
- 定义一个 匹配规则
- 将 匹配规则 应用到事件流上,检测满足规则的复杂事件
- 对检测到的复杂事件进行处理,得到结果进行输出
执行流程
输入:一个或多个简单事件构成的事件流。如:登录成功、登录失败,上图用不同的形状表示
处理:识别流中符合规则的数据,这些数据构成了一个新的 复杂事件流。上图的规则是:一个方形,之后紧跟 一个圆形
输出:满足规则的复杂事件。上图输出都是:一个方形,之后紧跟 一个圆形
总结
CEP用于分析 低延迟、频繁产生 的事件流。在无界流中检测出特定的数据组合
CEP支持在流上进行 模式匹配,根据模式的条件不同,分为:连续的条件 或 不连续的条件;
模式的条件允许有 时间的限制,当条件范围内没有达到满足的条件时,会导致模式匹配超时。
市场上有多种CEP的解决方案,例如Spark、Samza、Beam等,但他们都没有提供专门的库支持。然而,Flink提供了专门的CEP库。
参考:
https://blog.csdn.net/mengxianglong123/article/details/124123750
https://cloud.tencent.com/developer/article/1683066
