为什么风控系统要学 Flink?
很多开发者在接触实时计算时,容易陷入一个误区:以为学会了 Flink 的基础 API 就能搞定一切。但实际项目中,数据乱序、窗口丢失、反压处理、状态爆炸这些“坑”才是决定系统生死的关键。尤其是金融级风控场景,对延迟和准确性有着近乎苛刻的要求,传统的批量处理完全无法应对,而纯理论的 Flink 教程又往往缺乏生产环境的细节。这门课正是为了解决这个断层——它不教你从零认识什么是流式计算,而是直接带你进入一个完整的风控业务场景,用真实的工业级代码逻辑,填补你在“理论懂”到“能落地”之间的能力缺口。
课程解决什么问题?适合谁?
本课程聚焦于使用 Flink 结合 Groovy 脚本构建实时风控引擎。它解决的不仅仅是 Flink 的 API 使用问题,更是风控体系设计的核心要素:如何定义规则、如何处理特征计算、如何做实时决策以及后续的故障排查。
**适合人群:**
- 已经掌握 Java/Scala 基础,对 Flink 有初步了解,但在实际项目中不知道如何将规则引擎与流处理结合的开发者。
- 正在备考大数据相关认证,或者准备面试,需要展示具有业务深度的实战项目的转岗学习者。
- 工作中遇到了 Flink 性能瓶颈或状态管理难题,希望了解生产环境优化技巧和故障处理策略的技术人员。
**建议学习路径:**
不要试图一次性从头到尾看完所有视频。建议先快速浏览项目整体架构,理解数据流向(从数据源接入、特征计算、规则匹配到决策输出)。重点攻克以下模块:
1. **窗口与聚合逻辑**:风控中常见的滑动窗口、会话窗口设计。
2. **状态管理**:如何利用 KeyedState 保存用户行为特征,避免重复计算。
3. **Groovy 脚本集成**:学习如何将动态规则注入 Flink 任务,实现风控规则的热更新。
4. **调优与容错**:看老师如何处理反压,以及如何排查常见的高水位延迟问题。
学完能独立做什么?
完成本课后,你将不再是一个只会写 WordCount 的 Flink 新手。你将具备独立设计和实现一个基础实时风控系统的能力:
- 能够搭建基于 Flink 的实时数据管道,处理高吞吐量的交易流水。
- 能够设计并实现基于窗口和状态的复杂事件处理逻辑,识别欺诈模式。
- 能够使用 Groovy 等脚本语言灵活配置风控规则,而无需每次修改都重新部署代码。
- 具备初步的生产环境调试意识,知道在任务出错时该看哪些日志、查哪些指标。
**资料配合建议:**
课程提供的资料包包含了完整的工程代码和配置文件。请务必动手跑通第一个 Demo,不要只看代码。对照文档尝试修改一个简单的风控规则(例如将交易金额阈值调低),观察实时结果的变化。对于老师提到的“故障处理策略”,建议你在本地故意制造数据倾斜或延迟,复现问题并尝试解决,这才是将知识转化为技能的关键步骤。
课程介绍
Flink 从0到1实战实时风控系统,。本课程使用Flink+Groovy构建风控系统,旨在从生产的角度带领学员掌握风控体系设计的核心要素、Flink的实用技能、优化技巧以及故障处理策略等高级技能。同时,本课程将结合实际工作场景,帮助学员将所学知识融入实际工作中,提升架构设计思维和代码实践能力,避免走弯路,加速职业发展。
课程目录
1. 提升架构设计思维与能力 4. 构建 Flink 核心技能体系 2. 积累亿级数据实时处理经验 5. 实践 Flink 动态规则引擎 3. 具备生产环境故障处理能力 6. 解锁Flink 生态框架整合技巧 ├── 1-课程介绍与学习指南/@更多it资源 www. │ ├── [ 30M] 1-1 这是一门帮你进阶的好课 │ ├── [6.4M] 1-2 风控项目对于个人职业能力的提升 │ ├── [ 11M] 1-3 课程设计的思路以及所涵盖的知识点 │ └── [6.9M] 1-4 推荐几个课程项目使用的开发工具 ├── 2-风控项目需求/ │ ├── [9.6M] 2-1 羊毛党利用群控和接码平台薅尽羊毛 │ ├── [8.1M] 2-2 优惠券场景下被薅羊毛的业务逻辑漏洞复盘 │ ├── [ 20M] 2-3 基于领域驱动分析优惠券场景下风控的架构设计 │ ├── [ 42M] 2-4 基于领域驱动设计的代码目录分层架构思路 │ └── [ 16M] 2-5 优惠券场景下的风控规则和阙值确定 ├── 3-风控引擎架构设计及项目演示/ │ ├── [ 25M] 3-1 风控引擎架构的设计思路 │ ├── [ 26M] 3-2 画出风控引擎的系统架构图 │ ├── [ 15M] 3-3 风控规则引擎选用Groovy的原因 │ ├── [ 22M] 3-4 风控引擎整体技术栈以及版本 │ └── [3.8M] 3-5 亿级行为数据集提供的不同类型的羊毛党人数分布 ├── 4-风控引擎组件基础知识准备/ │ ├── [7.8M] 4-1 本章重点和难点 │ ├── [ 25M] 4-2 理解Flink数据流编程模型 │ ├── [ 40M] 4-3 代码演示Flink以流批两种方式实现wordcount(上) │ ├── [ 30M] 4-4 代码演示Flink以流批两种方式实现wordcount(下) │ ├── [ 28M] 4-5 通过有界流和无界流延伸理解Flink批流一体架构 │ ├── [ 27M] 4-6 理解Flink4大基石之状态机制 │ ├── [ 30M] 4-7 代码演示Flink基于状态计算实现wordcount(上) │ ├── [ 47M] 4-8 代码演示Flink基于状态计算实现wordcount(下) │ ├── [ 24M] 4-9 理解Flink4大基石之窗口机制 │ ├── [ 15M] 4-10 通过大白话通俗的去理解Flink4大基石之时间机(上) │ ├── [7.7M] 4-11 通过大白话通俗的去理解Flink4大基石之时间机(中) │ ├── [ 13M] 4-12 通过大白话通俗的去理解Flink4大基石之时间机(下) │ ├── [ 15M] 4-13 初步认识Flink的Cep模式匹配 │ ├── [ 25M] 4-14 理解Flink4大基石之checkpoint机制(上) │ ├── [ 11M] 4-15 理解Flink4大基石之checkpoint机制(中) │ ├── [ 17M] 4-16 理解Flink4大基石之checkpoint机制(下) │ └── [ 26M] 4-17 本章总结 ├── 5-基础设施搭建–环境搭建及单元测试/ │ ├── [3.3M] 5-1 本章重点和难点 │ ├── [ 23M] 5-2 画出项目结构图 │ ├── [ 25M] 5-3 基于docker的一键式搭建项目环境 │ ├── [ 36M] 5-4 Springboot基于Maven多模块构建项目 │ ├── [ 35M] 5-5 基于Junit5+MockMvc的单元测试用例编写(上) │ ├── [ 39M] 5-6 基于Junit5+MockMvc的单元测试用例编写(下) │ ├── [ 33M] 5-7 Flink流计算的单元测试用例编写(上) │ ├── [ 36M] 5-8 Flink流计算的单元测试用例编写(下) │ ├── [ 14M] 5-9 基于maven-helper插件解决依赖冲突异常 │ └── [ 17M] 5-10 本章总结 ├── 6-基础设施搭建–springboot工具类封装/ │ ├── [2.9M] 6-1 本章重点和难点 │ ├── [ 28M] 6-2 Springboot封装基于FastJson2的json工具类(上) │ ├── [ 23M] 6-3 Springboot封装基于FastJson2的json工具类(中) │ ├── [ 26M] 6-4 Springboot封装基于FastJson2的json工具类(下) │ ├── [ 34M] 6-5 基于LocalDate封装时间工具类+自动生成测试类(上) │ ├── [ 30M] 6-6 基于LocalDate封装时间工具类+自动生成测试类(下) │ ├── [ 35M] 6-7 Springboot集成slf4j+log4j2(上) │ ├── [ 32M] 6-8 Springboot集成slf4j+log4j2(下) │ ├── [ 39M] 6-9 Springboot封装自定义异常+全局异常的工具类 │ ├── [ 42M] 6-10 封装Lettuce+RedisTemplate读写Redis集群(上) │ ├── [ 56M] 6-11 封装Lettuce+RedisTemplate读写Redis集群(中) │ ├── [ 39M] 6-12 封装Lettuce+RedisTemplate读写Redis集群(下) │ ├── [ 46M] 6-13 Springboot封装Hbase工具类 │ └── [ 18M] 6-14 本章总结 ├── 7-基础设施搭建–flink工具类封装/ │ ├── [2.4M] 7-1 本章重点和难点 │ ├── [ 42M] 7-2 Flink使用ParameterTool读取配置 │ ├── [ 65M] 7-3 基于巴希尔(Bahire)-Flink写入Redis集群(上) │ ├── [ 38M] 7-4 基于巴希尔(Bahire)-Flink写入Redis集群(下) │ ├── [ 45M] 7-5 Flink通过富函数类实现自定义Source │ ├── [ 44M] 7-6 Flink自定义Source读取Redis集群(上) │ ├── [ 41M] 7-7 Flink自定义Source读取Redis集群(下) │ ├── [ 53M] 7-8 Flink自定义Source读取ClickHouse │ ├── [ 37M] 7-9 Flink使用JDBC-Connector+预编译批量写入ClickHouse(上) │ ├── [ 42M] 7-10 Flink使用JDBC-Connector+预编译批量写入ClickHouse(下) │ ├── [ 53M] 7-11 Flink TableSQL Api + 表转流读取Mysql │ └── [ 19M] 7-12 本章总结 ├── 8- 风控数据流入口–事件接入中心/ │ ├── [5.1M] 8-1 本章重点和难点 │ ├── [9.1M] 8-2 风控事件接入中心架构搭建思路 │ ├── [8.4M] 8-3 事件中心的数据格式 │ ├── [ 21M] 8-4 Flume监听目录将行为事件数据写入Kafka │ ├── [ 50M] 8-5 Flink1.14使用全新的Kafka Connector读取Kafka │ ├── [ 53M] 8-6 Flink1.14自定义反序列化消费Kafka Json格式数据 │ ├── [ 27M] 8-7 ClickHouse存储用户行为路径序列的表设计思路 │ ├── [ 15M] 8-8 ClickHouse拉取Kafka Json格式的用户行为数据 │ ├── [ 37M] 8-9 ClickHouse将用户行为聚合为行为路径序列 │ ├── [ 34M] 8-10 ClickHouse对用户行为序列进行路径挖掘找出羊毛客(上) │ ├── [ 36M] 8-11 ClickHouse对用户行为序列进行路径挖掘找出羊毛客(下) │ ├── [ 20M] 8-12 ClickHouse对用户行为维度指标存储的表设计思路 │ ├── [ 33M] 8-13 Flink Job的Checkpoint, State配置以及并行度的合理数量(上) │ ├── [ 37M] 8-14 Flink Job的Checkpoint, State配置以及并行度的合理数量(下) │ ├── [ 41M] 8-15 Flink对Kafka数据清洗并转化为POJO对象 │ ├── [ 44M] 8-16 Flink对事件数据流添加水印保证事件行为的有序性 │ ├── [ 48M] 8-17 Flink基于滑动窗口每5分钟统计用户最近1小时的登录频率 │ └── [ 46M] 8-18 Flink aggregate统计用户最近1小时登录频率的聚合操作 ├── 9-风控规则判断依据–指标计算模块/ │ ├── [3.9M] 9-1 本章重点和难点 │ ├── [ 12M] 9-2 风控指标的构成以及指标存储的设计思路 │ ├── [9.2M] 9-3 基于滑动窗口思想的风控指标采样思路 │ ├── [ 29M] 9-4 基于Redis快速获取风控指标采样的思路 │ ├── [7.3M] 9-5 风控指标在Redis唯一id的设计思路 │ ├── [ 37M] 9-6 Flink和POJO对象之间的关系 │ ├── [ 23M] 9-7 基于Flink实现的指标通用聚合计算框架思路 │ ├── [ 83M] 9-8 基于Flink实现的指标通用聚合计算框架初步结构 │ ├── [6.1M] 9-9 运营后台自定义指标聚合计算规则 │ ├── [ 40M] 9-10 Flink通过单独线程读取指标聚合计算规则 │ ├── [ 61M] 9-11 将指标聚合计算规则写入到事件流传播给下游算子思路 │ ├── [ 23M] 9-12 进一步细化运营后台的指标聚合计算规则自定义 │ ├── [ 79M] 9-13 通过反射机制将指标聚合计算规则写入到事件流 │ └── [ 64M] 9-14 keyBy算子根据指标聚合计算规则进行分组 ├── 10-风控系统核心–规则引擎/ │ ├── [1.7M] 10-1 本章重点和难点 │ ├── [ 85M] 10-2 window算子根据指标聚合计算规则将事件分配到对应窗口 │ ├── [ 87M] 10-3 根据指标聚合计算的规则进行增量聚合计算 │ ├── [ 56M] 10-4 aggregate算子根据指标聚合计算的规则进行结果输出 │ ├── [ 71M] 10-5 Kafka工具类直接返回事件流以及配置带环境的配置信息 │ ├── [ 20M] 10-6 风控规则的Mysql表设计思路及运营后台配置 │ ├── [ 12M] 10-7 风控规则的条件判断表达式解析的方案 │ ├── [ 53M] 10-8 Aviator引擎的表达式运算及自定义函数 │ ├── [ 55M] 10-9 Aviator引擎应用于风控规则条件的判断 │ ├── [ 28M] 10-10 Flink自定义生成规则事件流 │ ├── [ 26M] 10-11 Flink将规则事件流广播到行为事件流 │ ├── [ 35M] 10-12 行为事件流读取规则事件流中的风控规则(1) │ ├── [ 38M] 10-13 行为事件流读取规则事件流中的风控规则(2) │ ├── [ 32M] 10-14 对行为事件使用对应的规则进行风控判断 │ └── [8.4M] 10-15 本章总结 ├── 11-实时风控–动态规则实现/ │ ├── [3.1M] 11-1 本章重点和难点 │ ├── [8.0M] 11-2 哪种类型的风控规则适合实时计算以及实时判定 │ ├── [ 42M] 11-3 Flink-Cep开发流程及模式匹配 │ ├── [ 62M] 11-4 Flink-Cep检测最近1分钟登录失败超过阈值的用户 │ ├── [ 42M] 11-5 Flink-Cep以严格近邻的模式检测连续登录失败的用户 │ ├── [ 50M] 11-6 Flink-Cep基于迭代条件检测最近15分钟IP频繁变化的用户 │ ├── [ 17M] 11-7 Flink-Cep检测具有明显薅羊毛特征行为路径的用户 │ ├── [ 52M] 11-8 Flink-Cep对匹配事件的提取并且输出到事件流 │ ├── [7.1M] 11-9 Flink-Cep基石 NFA状态转移流程 │ ├── [7.4M] 11-10 为什么选择Groovy生成Flink-Cep Pattern对象 │ ├── [ 16M] 11-11 Java集成Groovy之执行Groovy脚本 │ ├── [ 30M] 11-12 Java集成Groovy之从指定位置加载Groovy脚本 │ ├── [ 37M] 11-13 Java集成Groovy之调用Groovy脚本的自定义类 │ ├── [ 37M] 11-14 Groovy能动态加载脚本的底层原理 │ ├── [ 48M] 11-15 Flink-Cep基于Groovy脚本动态加载Pattern │ └── [ 24M] 11-16 Groovy动态加载脚本频繁触发Full GC 的解决方案 ├── 12-风控引擎部署–单元测试/ │ ├── [ 13M] 12-1 总结风控引擎涉及的Flink任务 │ ├── [ 27M] 12-2 风控运营后台最终定稿版 │ ├── [8.6M] 12-3 总结Flink-Cep和DataStream Api进行风控的不同使用场景 │ ├── [ 59M] 12-4 测试Flink-Cep检测登录失败超过阈值的用户 │ ├── [ 78M] 12-5 测试Flink-Cep检测连续事件序列的用户 │ ├── [ 25M] 12-6 测试Flink-Cep基于Groovy脚本加载Pattern- │ ├── [ 23M] 12-7 通过运营后台动态修改Flink-Cep Pattern参数 │ └── [ 75M] 12-8 使用通义灵码和MybatisPlus3.5+ 自动生成CRUD ├── 13-风控引擎部署–打包部署/ │ ├── [6.4M] 13-1 部署定时任务 模拟源源不断的行为事件流 │ ├── [ 13M] 13-2 部署定时任务 ClickHouse将用户每小时的行为事件归档 │ ├── [ 14M] 13-3 补充 Flink-CDC的底层原理 │ ├── [ 70M] 13-4 补充 Flink-CDC实时捕获Mysql数据变更 │ ├── [ 53M] 13-5 补充 Flink-CDC自定义反序列化 │ ├── [ 33M] 13-6 部署风控规则 Flink-CDC监听规则表 │ ├── [ 32M] 13-7 补充 Flink 双流Join │ ├── [ 30M] 13-8 部署风控规则 通过Join对规则组信息进行维度补充 ?? [ 40M] 13-9 ع 㲥ʹΪ¼Я ?? [ 21M] 13-10 ع Ϊ¼ж ├── 14-风控引擎部署–压测优化/ │ ├── [2.4M] 14-1 Flink背压的表现 │ ├── [3.1M] 14-2 Flink流量压测方法 │ ├── [ 11M] 14-3 Flink背压告警以及造成的影响 │ └── [2.5M] 14-4 Flink背压解决方案 └── 资料代码/


