大数据 -130 - Flink CEP 详解 - 捕获超时事件提取全解析:从原理到完整实战代码教程 恶意登录案例实现

点一下关注吧!!!非常感谢!!持续更新!!!
🚀 AI 篇持续更新中!(长期更新)
AI 炼丹日志-31- 千呼万唤始出来 GPT-5 发布!“快的模型 + 深度思考模型 + 实时路由”,持续打造实用 AI 工具指南!📐🤖
💻 Java 篇正式开启!(300 篇)
目前 2025 年 10 月 20 日更新到:Java-153 深入浅出 MongoDB 全面的适用场景分析与选型指南 场景应用指南 MyBatis 已完结,Spring 已完结,Nginx 已完结,Tomcat 已完结,分布式服务正在更新!深入浅出助你打牢基础!
📊 大数据板块已完成多项干货更新(300 篇):
包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT 案例 详解
章节内容
上节我们完成了如下的内容:
Flink CEP 核心组件
CEP 的应用场景
CEP 的优势
超时事件提取
当一个模式通过 within 关键字定义了检测窗口时间时,部分事件序列可能因为超过窗口长度而被丢弃,为了能够处理这些超时的部分匹配,select 和 flatSelectAPI 调用允许制定超时处理程序。
FlinkCEP 开发流程详解
1. 数据源转换
从数据源(Kafka、文件、Socket 等)获取原始数据流
将数据转换为 DataStream:
常见数据源处理:
Kafka 数据源:使用 FlinkKafkaConsumer
文件数据源:使用 readTextFile/readFile 方法
2. 模式定义与模式流创建
定义事件模式(Pattern):
将 DataStream 与 Pattern 组合:
3. 模式流处理
使用 Select/Process 算子处理匹配事件:
处理方式选择:
select():简单提取匹配数据
process():复杂处理匹配数据
flatSelect():一对多处理
4. 结果输出
结果数据流处理:
输出到目标库:
常见输出目标:
Kafka:使用 FlinkKafkaProducer
数据库:使用 JDBCSink
文件系统:使用 StreamingFileSink
应用场景示例
风险控制:检测连续登录失败
运维监控:识别异常日志序列
物联网:设备状态异常检测
金融交易:可疑交易模式识别
SELECT 方法:
对检测到的序列模式序列应用选择函数,对于每个模式序列,调用提供的 PatternSelectFunction,模式选择函数只能产生一个结果元素。对超时的部分模式序列应用超时函数,对于每个部分模式序列,调用提供的 PatternTimeoutFunction,模式超时函数只能产生一个结果元素。你可以在使用相同 OutputTag 进行 Select 操作 SingleOutputStreamOperator 上获得 SingleOutputStreamOperator 生成的超时数据流。
非确定有限自动机
FlinkCEP 在运行时会将用户的逻辑转换为这样一个 NFA Graph(NFA 对象)所以有限状态机的工作过程,就是从开始状态,根据不同的输入,自动进行转换的过程。
上图中的状态机的功能,是检测二进制数是否含有偶数个 0。从图上可以看出,输入只有 1 和 0 两种。从 S1 状态开始,只有输入 0 才会转换到 S2 状态,同样 S2 状态下只有输入 0 才会转换到 S1。所以,二进制输入完毕,如果满足最终状态,也就是最后停在 S1 状态,那么输入的二进制数就含有偶数个 0。
CEP 开发流程
FlinkCEP 开发流程:
DataSource 中数据转换为 DataStream、Watermark、keyby
定义 Pattern,并将 DataStream 和 Pattern 组合转换为 PatternStream
PatternStream 经过 select、process 等算子转换为 DataStream
再次转换为 DataStream 经过处理后,Sink 到目标库
添加依赖
案例 1:恶意登录检测
找出 5 秒内,连续登录失败的账号以下是数据:
整体思路
获取到数据
在数据源上做 Watermark
在 Watermark 上根据 ID 分组 keyBy
做出模式 Pattern
在数据流上进行模式匹配
提取匹配成功的数据
编写代码
运行结果
可以看到程序输出:
运行截图如下所示:
版权声明: 本文为 InfoQ 作者【武子康】的原创文章。
原文链接:【http://xie.infoq.cn/article/20250eb6847d3239f0121a160】。文章转载请联系作者。







评论