钱大妈基于 Flink 的实时风控实践

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 钱大妈与阿里云 Flink 实时计算团队共建实时风控规则引擎,精确识别羊毛党以防营销预算流失。

摘要:本文作者彭明德,介绍了钱大妈与阿里云 Flink 实时计算团队共建实时风控规则引擎,精确识别羊毛党以防营销预算流失。主要内容包括:

  1. 项目背景
  2. 业务架构
  3. 未规则模型
  4. 难点攻坚
  5. 回顾展望


点击进入 Flink 中文学习网


一、项目背景


目前钱大妈基于云原生大数据组件(DataWorks、MaxCompute、Flink、Hologres)构建了离线和实时数据一体化的全渠道数据中台,为各业务线提供 BI 报表及数据接口支持。除了数仓的分析场景以外,钱大妈面临着业务系统中的风控需求,例如每季度的营销费用中被不少的羊毛党薅走正常用户的利益,其中羊毛党一方面可能导致用户的口碑下降,另一方面也会影响原有的活动运营预算迅速攀升从而导致资损。钱大妈与阿里云 Flink 实时计算团队共建实时风控规则引擎,精确识别羊毛党以防营销预算流失。

图一:钱大妈实时风控流程示意图


二、业务架构

钱大妈风控业务架构如图二所示总共分为四个部分:事件接入、风险感知、风险应对、风险回溯。通过 Flink 在线 ETL 加工处理的实时用户画像标签和销售事实指标,除了作为线上 BI 指标和实时大屏数据展示,也为实时规则引擎的事件接入提供重要的数据支持。


  1. 事件接入。其中包括黑白灰名单库、画像特征数据、行为埋点数据和中台交易数据。
  2. 风险感知。策略调研后发布到规则引擎,并对告警结果进行离线回归和多渠道触达。
  3. 风险应对。对涉及到财务结算的规则提供再审核、豁免机制或人工补偿。
  4. 风险回溯。策略命中后进行统计和风险分类分级,预警离线回溯并对风控事件闭件。


图二:钱大妈实时风控业务架构图


三、规则模型


风控业务专员通过产品界面简单配置即可实时动态发布风控规则,同时对在线 Flink 作业的规则进行新增、更新以及删除,其中风控规则模型主要分为统计型规则和序列型规则,相同模型支持子规则的嵌套,不同模型之间可以通过与、或关系进行组合。


图三:钱大妈Flink作业DAG抽象图


以下为规则组合中需要动态配置能力的配置项:


  1. 分组字段。不同字段分组、多字段分组的情况在风控规则的应用中非常常见。有如下规则样例:
  1. 以用户 ID 分组:"用户的下单次数";
  2. 以用户 ID、区域 ID 作为分组:"用户同一段时间内不同区域的订单数"。


  1. 聚合函数。聚合函数包括业务常用的聚合逻辑,规则引擎依赖 Flink 内置丰富的累加器,并在 Accumulator 接口的基础上进行了根据需求场景的自定义实现。样例规则如下:
  1. A 门店近 30 分钟独立消费用户数小于 100;
  2. B 门店新客消费金额大于 300。


  1. 窗口周期。窗口周期也即每个窗口的大小,如业务方可能希望在持续 30 分钟的秒杀活动周期内运行规则,或者希望重点关注异常时段。
  1. 每 30 分钟时间窗口内,单个用户发起超过 20 笔未支付订单;
  2. 凌晨 1 点至 3 点,单个用户支付订单数超 50 笔。


  1. 窗口类型。为了面对不同的业务需求,我们将业务规则中常见的窗口类型集成到规则引擎内部。其中包括滑动窗口、累计窗口、甚至是无窗口(即时触发)。


  1. 聚合前的过滤条件
  1. 只对"下单事件"进行统计;
  2. 过滤门店"虚拟用户"。


  1. 聚合后的过滤条件
  1. 用户 A 在 5 分钟内下单次数 "超过 150 次";
  2. 用户 B 在 5 分钟内购买金额 "超过 300 元"。


  1. 计算表达式。风控规则的字段口径通常是需要组合计算的,我们在表达式计算和编译中集成了更轻便和更高性能的 Aviator 表达式引擎。规则样例如下:
  1. 应收金额大于 150 元(应收金额 = 商品金额合计 +运费 + 优惠合计);
  2. 通过 POS 端支付的应收金额大于 150 元。


  1. 行为序列。行为序列其实也是事件与事件之间的组合,他打破了以往风控规则只能基于单事件维度描述事实的壁垒,在事件与事件之间的事实信息也将被规则引擎捕捉。规则样例如下:
  1. 用户 A 在 5 分钟内依次做了点击、收藏、加购;
  2. 用户 B 在 30 分钟前领了优惠券,但是没有下单。


图四:实时风控规则配置业务逻辑简图


四、难点攻坚


针对规则模型的流式序列型数据,我们选择 Flink CEP 处理事件序列匹配,由于我们整个风控作业使用 Flink 实现,并且 Flink CEP 作为 Flink 官方原生支持的 Library,集成度高无需引用额外组件即可满足事件序列匹配的需求。作业预期是允许用户在产品界面上热发布规则的,但是基于开源的 Flink CEP,实现规则动态更新能力存在以下困难点:


  1. Flink 社区的 CEP API 无法支持动态修改 Pattern 即无法满足上层规则中台、风控中台的可集成性;
  2. Flink 社区的 CEP API 无法支持Pattern 定义事件之间的超时。


阿里云 Flink 实时计算团队和钱大妈工程师共同攻坚,在 Flink 社区发起如下两个 FLIP 提案并且在阿里云实时计算产品上面输出相应功能解决此问题:


  1. FLIP-200:CEP 支持多规则和动态 Pattern 变更;
  2. FLIP-228:CEP 支持 Pattern 定义事件之间的超时。


阿里云实时计算产品输出的支持多规则和动态规则变更、支持 Pattern 定义事件之间的超时以及支持基于 IterativeCondition 的累加器商业化功能拓宽 Flink 在实时风控的能力,并且上述商业化功能已经在钱大妈生产环境落地实践。其中 Flink CEP 动态更新 Pattern 机制中内部各组件的交互总览如下:


图五:社区Flink CEP动态Pattern机制


风控规则由产品界面作为入口,规则写入到 Hologres 中,同时 JDBCPatternProcessorDiscover 周期性轮询发现规则的变更。其中规则表的数据结构如下:


  1. Id:规则ID;
  2. Version:规则对应的版本号;
  3. Keyby:规则分组字段(如需分组);
  4. Pattern:CEP Pattern 序列化后的 Json 字符串;
  5. Function:CEP 匹配后处理的 PatternProcessFunction;
  6. Relation:统计型和规则型之间的与、或关系(前提:统计型和规则型的 ID 相同)。


图六:社区Flink动态CEP规则表


五、回顾展望


基于 Flink 的实时风控解决方案已接应用于钱大妈集团内部生产环境,在此解决方案里未引入新的技术组件和编程语言,最大化复用 Flink 资源实现实时风控场景需求,极大降低新组件引入存在的潜在运维风险。另一方面也极大降低研发团队的学习成本,高效释放实时计算的人力资源,并且对于研发和业务应用上面带来如下好处:


  • 解耦 Flink 作业逻辑开发和业务规则定义;
  • 业务规则存储在 Database 中,便于查看规则当前状态和历史版本;
  • 规则变更只需修改 Database 存储的规则,Flink 自动加载更新作业中的规则列表;
  • 结合 Flink 生态能够非常容易集成事件异构数据源的读取与写入;
  • 结合 Flink 分布式能力,大规模扩展至数千并发度匹配运行规则。


后续钱大妈将和阿里云实时计算产品团队,继续共建完善基于 Flink 的实时风控风控解决方案,其中在 Flink CEP 的未来规划将围绕以下三个主要方向展开:


  1. Flink CEP 能力的进一步增强;
  2. Flink CEP SQL 的动态能力;
  3. Flink + DSL 的 Native 支持


公司简介:钱大妈是在社区生鲜连锁中,以"不卖隔夜肉"作为品牌理念的的行业开拓者。在成立之初即从新鲜角度重新梳理传统生鲜行业的标准,对肉菜市场进行新的定义。钱大妈已全国布局近 30 座城市,门店总数突破 3000 多家,服务家庭超 1000 万。


本文作者:彭明德,目前就职于钱大妈,任全渠道数据中台大数据开发工程师。


同时也希望更多有实时风控需求,或热爱风控场景建设的小伙伴能够在 Flink 社区风控钉钉专群进行沟通:

image.png

图七:Flink社区实时风控专群二维码

点击进入 Flink 中文学习网




更多 Flink 相关技术问题,可扫码加入社区钉钉交流群

第一时间获取最新技术文章和社区动态,请关注公众号~

image.png

活动推荐

阿里云基于 Apache Flink 构建的企业级产品-实时计算Flink版现开启活动:

99 元试用 实时计算Flink版(包年包月、10CU)即有机会获得 Flink 独家定制卫衣;另包 3 个月及以上还有 85 折优惠!

了解活动详情:https://www.aliyun.com/product/bigdata/sc

截屏2022-06-16 10.00.44.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
1天前
|
存储 运维 监控
阿里妈妈基于 Flink+Paimon 的 Lakehouse 应用实践
本文总结了阿里妈妈数据技术专家陈亮在Flink Forward Asia 2024大会上的分享,围绕广告业务背景、架构设计及湖仓方案演进展开。内容涵盖广告生态运作、实时数仓挑战与优化,以及基于Paimon的湖仓方案优势。通过分层设计与技术优化,实现业务交付周期缩短30%以上,资源开销降低40%,并大幅提升系统稳定性和运营效率。文章还介绍了阿里云实时计算Flink版的免费试用活动,助力企业探索实时计算与湖仓一体化解决方案。
161 1
阿里妈妈基于 Flink+Paimon 的 Lakehouse 应用实践
|
10天前
|
存储 SQL Java
Flink CDC + Hologres高性能数据同步优化实践
本文整理自阿里云高级技术专家胡一博老师在Flink Forward Asia 2024数据集成(二)专场的分享,主要内容包括:1. Hologres介绍:实时数据仓库,支持毫秒级写入和高QPS查询;2. 写入优化:通过改进缓冲队列、连接池和COPY模式提高吞吐量和降低延迟;3. 消费优化:优化离线场景和分区表的消费逻辑,提升性能和资源利用率;4. 未来展望:进一步简化用户操作,支持更多DDL操作及全增量消费。Hologres 3.0全新升级为一体化实时湖仓平台,提供多项新功能并降低使用成本。
194 1
Flink CDC + Hologres高性能数据同步优化实践
|
14天前
|
SQL 存储 调度
基于 Flink 进行增量批计算的探索与实践
基于 Flink 进行增量批计算的探索与实践
基于 Flink 进行增量批计算的探索与实践
|
24天前
|
SQL 存储 HIVE
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
本文整理自鹰角网络大数据开发工程师朱正军在Flink Forward Asia 2024上的分享,主要涵盖四个方面:鹰角数据平台架构、数据湖选型、湖仓一体建设及未来展望。文章详细介绍了鹰角如何构建基于Paimon的数据湖,解决了Hudi入湖的痛点,并通过Trino引擎和Ranger权限管理实现高效的数据查询与管控。此外,还探讨了湖仓一体平台的落地效果及未来技术发展方向,包括Trino与Paimon的集成增强、StarRocks的应用以及Paimon全面替换Hive的计划。
151 1
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
|
14天前
|
SQL 弹性计算 DataWorks
Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践
Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践
|
14天前
|
SQL 存储 HIVE
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
|
14天前
|
消息中间件 关系型数据库 Kafka
阿里云基于 Flink CDC 的现代数据栈云上实践
阿里云基于 Flink CDC 的现代数据栈云上实践
|
2月前
|
SQL 存储 Apache
基于 Flink 进行增量批计算的探索与实践
本文整理自阿里云高级技术专家、Apache Flink PMC朱翥老师在Flink Forward Asia 2024的分享,内容分为三部分:背景介绍、工作介绍和总结展望。首先介绍了增量计算的定义及其与批计算、流计算的区别,阐述了增量计算的优势及典型需求场景,并解释了为何选择Flink进行增量计算。其次,详细描述了当前的工作进展,包括增量计算流程、执行计划生成、控制消费数据量级及执行进度记录恢复等关键技术点。最后,展示了增量计算的简单示例、性能测评结果,并对未来工作进行了规划。
582 6
基于 Flink 进行增量批计算的探索与实践
|
3月前
|
消息中间件 JSON 数据库
探索Flink动态CEP:杭州银行的实战案例
本文由杭州银行大数据工程师唐占峰、欧阳武林撰写,介绍Flink动态CEP的定义、应用场景、技术实现及使用方式。Flink动态CEP是基于Flink的复杂事件处理库,支持在不重启服务的情况下动态更新规则,适应快速变化的业务需求。文章详细阐述了其在反洗钱、反欺诈和实时营销等金融领域的应用,并展示了某金融机构的实际应用案例。通过动态CEP,用户可以实时调整规则,提高系统的灵活性和响应速度,降低维护成本。文中还提供了具体的代码示例和技术细节,帮助读者理解和使用Flink动态CEP。
627 2
探索Flink动态CEP:杭州银行的实战案例
|
2月前
|
消息中间件 关系型数据库 MySQL
Flink CDC 在阿里云实时计算Flink版的云上实践
本文整理自阿里云高级开发工程师阮航在Flink Forward Asia 2024的分享,重点介绍了Flink CDC与实时计算Flink的集成、CDC YAML的核心功能及应用场景。主要内容包括:Flink CDC的发展及其在流批数据处理中的作用;CDC YAML支持的同步链路、Transform和Route功能、丰富的监控指标;典型应用场景如整库同步、Binlog原始数据同步、分库分表同步等;并通过两个Demo展示了MySQL整库同步到Paimon和Binlog同步到Kafka的过程。最后,介绍了未来规划,如脏数据处理、数据限流及扩展数据源支持。
232 0
Flink CDC 在阿里云实时计算Flink版的云上实践

相关产品

  • 实时计算 Flink版