课程解决的核心问题

实时风控系统是企业级应用中极具挑战性的场景,其核心难点在于如何在高并发下对海量行为数据进行毫秒级决策。市面上多数 Flink 教程仅停留在 WordCount 或基础 API 调用层面,缺乏将流式计算能力转化为具体业务风控规则的完整闭环。本课程以「优惠券薅羊毛」为真实业务场景,填补了这一空白。它不只教你写代码,更侧重讲解如何利用领域驱动设计(DDD)思维,从业务漏洞复盘出发,推导出风控架构方案。你将学习如何识别群控、接码平台等黑产行为,并将这些业务逻辑转化为可执行的风控规则,解决从「技术实现」到「业务落地」的最后一公里问题。

适用基础与学习路径建议

本课程面向具备 Java 基础、熟悉 Flink 基本编程模型(如 DataStream API、窗口机制)的中级开发者。若你仅是 Flink 初学者,建议先掌握流处理基础再入手,否则第 4 章的状态机制和批流一体架构部分会构成较大认知门槛。强烈建议的学习顺序是:先通读第 1 至 3 章,再细究第 4 章。第 1 章明确课程价值与职业提升路径;第 2 章深度剖析优惠券场景的业务逻辑与规则阈值设定,这是理解风控必要性的关键;第 3 章展示引擎架构设计、技术栈选型及 Groovy 规则引擎的引入原因,帮助你建立系统全局观。只有在建立了对业务需求和架构设计的清晰认知后,再回头深入第 4 章的技术细节,才能避免陷入代码而忽略架构的思考误区。切忌本末倒置,一开始就扎进代码实现中。

学完产出与资料配合练习

完成本课程后,你将具备独立设计实时风控引擎的能力。你不仅能画出清晰的风控系统架构图,还能根据业务需求制定规则策略,理解亿级数据下的性能考量。资料包中提供的亿级行为数据集是核心练习素材。请搭建开发环境,导入数据并运行项目。重点练习在于修改 Groovy 规则脚本:尝试调整领取频率阈值、变更时间窗口范围,观察拦截效果的变化。这种「修改规则-观察输出-理解原理」的闭环训练,能让你深刻体会业务逻辑与计算引擎解耦的设计价值。通过亲手改造规则,你将真正掌握如何应对复杂的实时计算场景,为后续从事大数据平台或风控系统开发打下坚实基础。

课程目录

第1章 课程介绍与学习指南 试看 4 节 | 31分钟 1-1 这是一门帮你进阶的好课 (14:51).mp4
 1-2 风控项目对于个人职业能力的提升 (03:58).mp4
 1-3 课程设计的思路以及所涵盖的知识点 (06:43).mp4
 1-4 推荐几个课程项目使用的开发工具 (04:38).mp4
 第2章 风控项目需求 5 节 | 48分钟 2-1 羊毛党利用群控和接码平台薅尽羊毛 (06:00).mp4
 2-2 优惠券场景下被薅羊毛的业务逻辑漏洞复盘 (05:33).mp4
 2-3 基于领域驱动分析优惠券场景下风控的架构设计 (10:25).mp4
 2-4 基于领域驱动设计的代码目录分层架构思路 (18:28).mp4
 2-5 优惠券场景下的风控规则和阙值确定 (07:08).mp4
 第3章 风控引擎架构设计及项目演示 5 节 | 46分钟 3-1 风控引擎架构的设计思路 (14:17).mp4
 3-2 画出风控引擎的系统架构图 (11:36).mp4
 3-3 风控规则引擎选用Groovy的原因 (08:53).mp4
 3-4 风控引擎整体技术栈以及版本 (08:32).mp4
 3-5 亿级行为数据集提供的不同类型的羊毛党人数分布 (02:14).mp4
 第4章 风控引擎组件基础知识准备 

17 节 | 193分钟 4-1 本章重点和难点 (03:27).mp4
 4-2 理解Flink数据流编程模型 (14:59).mp4
 4-3 代码演示Flink以流批两种方式实现wordcount(上) (16:59).mp4
 4-4 代码演示Flink以流批两种方式实现wordcount(下) (11:29).mp4
 4-5 通过有界流和无界流延伸理解Flink批流一体架构 (16:19).mp4
 4-6 理解Flink4大基石之状态机制 (14:34).mp4
 4-7 代码演示Flink基于状态计算实现wordcount(上) (13:10).mp4
 4-8 代码演示Flink基于状态计算实现wordcount(下) (19:07).mp4
 4-9 理解Flink4大基石之窗口机制 (14:47).mp4
 4-10 通过大白话通俗的去理解Flink4大基石之时间机(上) (09:19).mp4
 4-11 通过大白话通俗的去理解Flink4大基石之时间机(中) (05:25).mp4
 4-12 通过大白话通俗的去理解Flink4大基石之时间机(下) (07:01).mp4
 4-

13 初步认识Flink的Cep模式匹配 (08:20).mp4
 4-14 理解Flink4大基石之checkpoint机制(上) (11:47).mp4
 4-15 理解Flink4大基石之checkpoint机制(中) (05:17).mp4
 4-16 理解Flink4大基石之checkpoint机制(下) (08:09).mp4
 4-

17 本章总结 (12:46).mp4
 第5章 基础设施搭建--环境搭建及单元测试 

13 节 | 115分钟 5-1 本章重点和难点 (01:45).mp4
 5-2 画出项目结构图 (09:59).mp4
 5-3 基于docker的一键式搭建项目环境 (08:20).mp4
 5-4 【梳理】项目环境搭建步骤.mp4
 5-5 Springboot基于Maven多模块构建项目 (15:32).mp4
 5-6 基于Junit5+MockMvc的单元测试用例编写(上) (15:11).mp4
 5-7 基于Junit5+MockMvc的单元测试用例编写(下) (17:01).mp4
 5-8 Flink流计算的单元测试用例编写(上) (14:50).mp4
 5-9 Flink流计算的单元测试用例编写(下) (15:22).mp4
 5-

10 基于maven-helper插件解决依赖冲突异常 (06:09).mp4
 5-11 【拓展】简历植入重点及本章涉及面试知识点.mp4
 5-12 【作业】本章作业.mp4
 5-

13 本章总结 (10:33).mp4
 第6章 基础设施搭建--springboot工具类封装 

14 节 | 178分钟 6-1 本章重点和难点 (02:03).mp4
 6-2 Springboot封装基于FastJson2的json工具类(上) (12:16).mp4
 6-3 Springboot封装基于FastJson2的json工具类(中) (10:13).mp4
 6-4 Springboot封装基于FastJson2的json工具类(下) (11:31).mp4
 6-5 基于LocalDate封装时间工具类+自动生成测试类(上) (14:38).mp4
 6-6 基于LocalDate封装时间工具类+自动生成测试类(下) (09:08).mp4
 6-7 Springboot集成slf4j+log4j2(上) (15:24).mp4
 6-8 Springboot集成slf4j+log4j2(下) (12:39).mp4
 6-9 Springboot封装自定义异常+全局异常的工具类 (16:55).mp4
 6-10 封装Lettuce+RedisTemplate读写Redis集群(上) (17:18).mp4
 6-11 封装Lettuce+RedisTemplate读写Redis集群(中) (16:58).mp4
 6-12 封装Lettuce+RedisTemplate读写Redis集群(下) (11:48).mp4
 6-

13 Springboot封装Hbase工具类 (18:18).mp4
 6-

14 本章总结 (07:59).mp4
 第7章 基础设施搭建--flink工具类封装 

12 节 | 172分钟 7-1 本章重点和难点 (01:14).mp4
 7-2 Flink使用ParameterTool读取配置 (14:59).mp4
 7-3 基于巴希尔(Bahire)-Flink写入Redis集群(上) (18:37).mp4
 7-4 基于巴希尔(Bahire)-Flink写入Redis集群(下) (11:24).mp4
 7-5 Flink通过富函数类实现自定义Source (19:44).mp4
 7-6 Flink自定义Source读取Redis集群(上) (15:24).mp4
 7-7 Flink自定义Source读取Redis集群(下) (14:13).mp4
 7-8 Flink自定义Source读取ClickHouse (17:50).mp4
 7-9 Flink使用JDBC-Connector+预编译批量写入ClickHouse(上) (12:56).mp4
 7-10 Flink使用JDBC-Connector+预编译批量写入ClickHouse(下) (13:34).mp4
 7-

11 Flink TableSQL Api + 表转流读取Mysql (21:02).mp4
 7-

12 本章总结 (10:14).mp4
 第8章 风控数据流入口--事件接入中心 

18 节 | 230分钟 8-1 本章重点和难点 (02:16).mp4
 8-2 风控事件接入中心架构搭建思路 (06:10).mp4
 8-3 事件中心的数据格式 (04:42).mp4
 8-4 Flume监听目录将行为事件数据写入Kafka (05:50).mp4
 8-5 Flink1.14使用全新的Kafka Connector读取Kafka (18:46).mp4
 8-6 Flink1.14自定义反序列化消费Kafka Json格式数据 (16:33).mp4
 8-7 ClickHouse存储用户行为路径序列的表设计思路 (13:24).mp4
 8-8 ClickHouse拉取Kafka Json格式的用户行为数据 (05:59).mp4
 8-9 ClickHouse将用户行为聚合为行为路径序列 (16:03).mp4
 8-10 ClickHouse对用户行为序列进行路径挖掘找出羊毛客(上) (14:34).mp4
 8-11 ClickHouse对用户行为序列进行路径挖掘找出羊毛客(下) (15:42).mp4
 8-12 ClickHouse对用户行为维度指标存储的表设计思路 (07:34).mp4
 8-

13 Flink Job的Checkpoint, State配置以及并行度的合理数量(上) (14:24).mp4
 8-

14 Flink Job的Checkpoint, State配置以及并行度的合理数量(下) (16:08).mp4
 8-15 Flink对Kafka数据清洗并转化为POJO对象 (16:16).mp4
 8-16 Flink对事件数据流添加水印保证事件行为的有序性 (17:27).mp4
 8-17 Flink基于滑动窗口每5分钟统计用户最近1小时的登录频率 (20:32).mp4
 8-

18 Flink aggregate统计用户最近1小时登录频率的聚合操作 (17:37).mp4
 第9章 风控规则判断依据--指标计算模块 

14 节 | 189分钟 9-1 本章重点和难点 (02:06).mp4
 9-2 风控指标的构成以及指标存储的设计思路 (08:36).mp4
 9-3 基于滑动窗口思想的风控指标采样思路 (07:49).mp4
 9-4 基于Redis快速获取风控指标采样的思路 (21:49).mp4
 9-5 风控指标在Redis唯一id的设计思路 (06:34).mp4
 9-6 Flink和POJO对象之间的关系 (17:02).mp4
 9-7 基于Flink实现的指标通用聚合计算框架思路 (10:14).mp4
 9-8 基于Flink实现的指标通用聚合计算框架初步结构 (21:19).mp4
 9-9 运营后台自定义指标聚合计算规则 (04:01).mp4
 9-

10 Flink通过单独线程读取指标聚合计算规则 (16:25).mp4
 9-

11 将指标聚合计算规则写入到事件流传播给下游算子思路 (19:19).mp4
 9-

12 进一步细化运营后台的指标聚合计算规则自定义 (10:19).mp4
 9-

13 通过反射机制将指标聚合计算规则写入到事件流 (21:48).mp4
 9-

14 keyBy算子根据指标聚合计算规则进行分组 (20:53).mp4
 第10章 风控系统核心--规则引擎 

15 节 | 219分钟 10-1 本章重点和难点 (01:09).mp4
 10-2 window算子根据指标聚合计算规则将事件分配到对应窗口 (26:08).mp4
 10-3 根据指标聚合计算的规则进行增量聚合计算 (28:35).mp4
 10-4 aggregate算子根据指标聚合计算的规则进行结果输出 (22:07).mp4
 10-5 Kafka工具类直接返回事件流以及配置带环境的配置信息 (21:08).mp4
 10-6 风控规则的Mysql表设计思路及运营后台配置 (08:49).mp4
 10-7 风控规则的条件判断表达式解析的方案 (06:46).mp4
 10-8 Aviator引擎的表达式运算及自定义函数 (21:38).mp4
 10-9 Aviator引擎应用于风控规则条件的判断 (14:09).mp4
 10-

10 Flink自定义生成规则事件流 (11:56).mp4
 10-

11 Flink将规则事件流广播到行为事件流 (11:48).mp4
 10-12 行为事件流读取规则事件流中的风控规则(1) (14:57).mp4
 10-13 行为事件流读取规则事件流中的风控规则(2) (13:51).mp4
 10-

14 对行为事件使用对应的规则进行风控判断 (10:53).mp4
 10-

15 本章总结 (04:41).mp4
 第11章 实时风控--动态规则实现 

16 节 | 185分钟 11-1 本章重点和难点 (01:43).mp4
 11-2 哪种类型的风控规则适合实时计算以及实时判定 (03:04).mp4
 11-3 Flink-Cep开发流程及模式匹配 (17:14).mp4
 11-4 Flink-Cep检测最近1分钟登录失败超过阈值的用户 (21:43).mp4
 11-5 Flink-Cep以严格近邻的模式检测连续登录失败的用户 (13:23).mp4
 11-6 Flink-Cep基于迭代条件检测最近15分钟IP频繁变化的用户 (19:20).mp4
 11-7 Flink-Cep检测具有明显薅羊毛特征行为路径的用户 (06:47).mp4
 11-8 Flink-Cep对匹配事件的提取并且输出到事件流 (17:37).mp4
 11-9 Flink-Cep基石 NFA状态转移流程 (07:31).mp4
 11-

10 为什么选择Groovy生成Flink-Cep Pattern对象 (06:35).mp4
 11-

11 Java集成Groovy之执行Groovy脚本 (07:05).mp4
 11-12 Java集成Groovy之从指定位置加载Groovy脚本 (10:57).mp4
 11-13 Java集成Groovy之调用Groovy脚本的自定义类 (10:51).mp4
 11-

14 Groovy能动态加载脚本的底层原理 (13:09).mp4
 11-15 Flink-Cep基于Groovy脚本动态加载Pattern (20:23).mp4
 11-

16 Groovy动态加载脚本频繁触发Full GC 的解决方案 (07:09).mp4
 第12章 风控引擎部署--单元测试 8 节 | 97分钟 12-1 总结风控引擎涉及的Flink任务 (06:52).mp4
 12-2 风控运营后台最终定稿版 (11:36).mp4
 12-3 总结Flink-Cep和DataStream Api进行风控的不同使用场景 (04:02).mp4
 12-4 测试Flink-Cep检测登录失败超过阈值的用户 (17:35).mp4
 12-5 测试Flink-Cep检测连续事件序列的用户 (19:34).mp4
 12-6 测试Flink-Cep基于Groovy脚本加载Pattern- (07:20).mp4
 12-7 通过运营后台动态修改Flink-Cep Pattern参数 (09:21).mp4
 12-8 使用通义灵码和MybatisPlus3.5+ 自动生成CRUD (20:12).mp4
 第13章 风控引擎部署--打包部署 

13 节 | 152分钟 13-1 部署定时任务 模拟源源不断的行为事件流 (04:55).mp4
 13-2 部署定时任务 ClickHouse将用户每小时的行为事件归档 (03:30).mp4
 13-3 补充 Flink-CDC的底层原理 (06:14).mp4
 13-4 补充 Flink-CDC实时捕获Mysql数据变更 (20:06).mp4
 13-5 补充 Flink-CDC自定义反序列化 (18:33).mp4
 13-6 部署风控规则 Flink-CDC监听规则表 (11:59).mp4
 13-7 补充 Flink 双流Join (12:24).mp4
 13-8 部署风控规则 通过Join对规则组信息进行维度补充 (06:46).mp4
 13-9 部署风控规则 广播规则使得行为事件携带规则组 (10:35).mp4
 13-

10 部署风控规则 遍历规则组产生冗余行为事件并规则判断 (06:49).mp4
 13-

11 部署动态cep Flink不停机动态加载 cep 风控规则的方案 (16:00).mp4
 13-

12 部署动态cep 修改cep源码注入动态获取Pattern的方法 (15:20).mp4
 13-

13 部署动态cep 修改cep源码构造新的NFA进行事件匹配 (18:00).mp4
 第14章 风控引擎部署--压测优化 4 节 | 10分钟 14-1 Flink背压的表现 (01:30).mp4
 14-2 Flink流量压测方法 (01:50).mp4
 14-3 Flink背压告警以及造成的影响 (05:02).mp4
 14-4 Flink背压解决方案 (01:12).mp4