钱大妈基于 Flink 的实时风控实践
▼ 关注「Apache Flink」,获取更多技术干货 ▼
摘要:本文作者彭明德,介绍了钱大妈与阿里云 Flink 实时计算团队共建实时风控规则引擎,精确识别羊毛党以防营销预算流失。主要内容包括:
项目背景
业务架构
规则模型
难点攻坚
回顾展望
Tips:点击「阅读原文」进入 Flink 中文学习网~
一、项目背景
目前钱大妈基于云原生大数据组件(DataWorks、MaxCompute、Flink、Hologres)构建了离线和实时数据一体化的全渠道数据中台,为各业务线提供 BI 报表及数据接口支持。除了数仓的分析场景以外,钱大妈面临着业务系统中的风控需求,例如每季度的营销费用中被不少的羊毛党薅走正常用户的利益,其中羊毛党一方面可能导致用户的口碑下降,另一方面也会影响原有的活动运营预算迅速攀升从而导致资损。钱大妈与阿里云 Flink 实时计算团队共建实时风控规则引擎,精确识别羊毛党以防营销预算流失。
图一:钱大妈实时风控流程示意图
二、业务架构
钱大妈风控业务架构如图二所示总共分为四个部分:事件接入、风险感知、风险应对、风险回溯。通过 Flink 在线 ETL 加工处理的实时用户画像标签和销售事实指标,除了作为线上 BI 指标和实时大屏数据展示,也为实时规则引擎的事件接入提供重要的数据支持。
事件接入。其中包括黑白灰名单库、画像特征数据、行为埋点数据和中台交易数据。
风险感知。策略调研后发布到规则引擎,并对告警结果进行离线回归和多渠道触达。 风险应对。对涉及到财务结算的规则提供再审核、豁免机制或人工补偿。 风险回溯。策略命中后进行统计和风险分类分级,预警离线回溯并对风控事件闭件。
三、规则模型
分组字段。不同字段分组、多字段分组的情况在风控规则的应用中非常常见。有如下规则样例: 以用户 ID 分组:"用户的下单次数"; 以用户 ID、区域 ID 作为分组:"用户同一段时间内不同区域的订单数"。 聚合函数。聚合函数包括业务常用的聚合逻辑,规则引擎依赖 Flink 内置丰富的累加器,并在 Accumulator 接口的基础上进行了根据需求场景的自定义实现。样例规则如下: A 门店近 30 分钟独立消费用户数小于 100; B 门店新客消费金额大于 300。 窗口周期。窗口周期也即每个窗口的大小,如业务方可能希望在持续 30 分钟的秒杀活动周期内运行规则,或者希望重点关注异常时段。 每 30 分钟时间窗口内,单个用户发起超过 20 笔未支付订单; 凌晨 1 点至 3 点,单个用户支付订单数超 50 笔。 窗口类型。为了面对不同的业务需求,我们将业务规则中常见的窗口类型集成到规则引擎内部。其中包括滑动窗口、累计窗口、甚至是无窗口(即时触发)。 聚合前的过滤条件: 只对"下单事件"进行统计; 过滤门店"虚拟用户"。 聚合后的过滤条件: 用户 A 在 5 分钟内下单次数 "超过 150 次"; 用户 B 在 5 分钟内购买金额 "超过 300 元"。 计算表达式。风控规则的字段口径通常是需要组合计算的,我们在表达式计算和编译中集成了更轻便和更高性能的 Aviator 表达式引擎。规则样例如下: 应收金额大于 150 元(应收金额 = 商品金额合计 +运费 + 优惠合计); 通过 POS 端支付的应收金额大于 150 元。 行为序列。行为序列其实也是事件与事件之间的组合,他打破了以往风控规则只能基于单事件维度描述事实的壁垒,在事件与事件之间的事实信息也将被规则引擎捕捉。规则样例如下: 用户 A 在 5 分钟内依次做了点击、收藏、加购; 用户 B 在 30 分钟前领了优惠券,但是没有下单。
四、难点攻坚
Flink 社区的 CEP API 无法支持动态修改 Pattern 即无法满足上层规则中台、风控中台的可集成性; Flink 社区的 CEP API 无法支持Pattern 定义事件之间的超时。
FLIP-200 [1]:CEP 支持多规则和动态 Pattern 变更; FLIP-228 [2]:CEP 支持 Pattern 定义事件之间的超时。
Id:规则ID; Version:规则对应的版本号; Keyby:规则分组字段(如需分组); Pattern:CEP Pattern 序列化后的 Json 字符串; Function:CEP 匹配后处理的 PatternProcessFunction; Relation:统计型和规则型之间的与、或关系(前提:统计型和规则型的 ID 相同)。
五、回顾展望
解耦 Flink 作业逻辑开发和业务规则定义; 业务规则存储在 Database 中,便于查看规则当前状态和历史版本; 规则变更只需修改 Database 存储的规则,Flink 自动加载更新作业中的规则列表; 结合 Flink 生态能够非常容易集成事件异构数据源的读取与写入; 结合 Flink 分布式能力,大规模扩展至数千并发度匹配运行规则。
Flink CEP 能力的进一步增强; Flink CEP SQL 的动态能力; Flink + DSL 的 Native 支持。
公司简介:钱大妈是在社区生鲜连锁中,以"不卖隔夜肉"作为品牌理念的的行业开拓者。在成立之初即从新鲜角度重新梳理传统生鲜行业的标准,对肉菜市场进行新的定义。钱大妈已全国布局近 30 座城市,门店总数突破 3000 多家,服务家庭超 1000 万。
本文作者:彭明德,目前就职于钱大妈,任全渠道数据中台大数据开发工程师。
往期精选