《Apache Flink 案例集(2022版)》——3.机器学习——钱大妈-基于阿里云Flink的实时风控实践(2) https://developer.aliyun.com/article/1228150
针对规则模型的流式序列型数据,钱大妈选择 Flink CEP 处理事件序列匹配,由于我们整个风控作业使用 Flink 实现,并且 Flink CEP 作为 Flink 官方原生支持的 Library,集成度高无需引用额外组件即可满足事件序列匹配的需求。作业预期是允许用户在产品界面上热发布规则的,但是基于开源的 Flink CEP,实现规则动态更新能力存在以下困难点:
Flink 社区的 CEP API 无法支持动态修改 Pattern 即无法满足上层规则中台、风控中台的可集成性;
Flink 社区的 CEP API 无法支持Pattern 定义事件之间的超时。
为了解决这些问题,阿里云 Flink 实时计算团队和钱大妈工程师共同攻坚,在 Flink 社区发起如下两个 FLIP 提案并且在阿里云实时计算产品上面输出相应功能解决此问题:
FLIP-200:CEP 支持多规则和动态 Pattern 变更;
FLIP-228:CEP 支持 Pattern 定义事件之间的超时。
阿里云实时计算产品输出的支持多规则和动态规则变更、支持 Pattern 定义事件之间的超时以及支持基于 IterativeCondition 的累加器商业化功能拓宽 Flink 在实时风控的能力,并且上述商业化功能已经在钱大妈生产环境落地实践。其中 Flink CEP 动态更新 Pattern 机制中内部各组件的交互总览如下:
风控规则由产品界面作为入口,规则写入到 Hologres 中,同时 JDBCPatternProcessorDiscover 周期性轮询发现规则的变更。
用户收益
基于 Flink 的实时风控解决方案已经应用于钱大妈集团内部生产环境,在该方案中并不引入新的技术组件和编程语言,最大化复用Flink资源来实现新业务场景,降低了新组件可能引入的潜在运维风险。另一方面也极大降低了团队的学习成本,将实时计算的人力最高效的释放出来。并在开发和业务运用上带来如下好处:
将 Flink作业逻辑开发和规则描述两者完全解耦;
规则描述存储在DB中,便于查看规则状态和历史版本;
规则变化时只修改DB中的规则,Flink自动加载完成规则更新;
结合Flink生态,可以轻松扩展事件源组件和事件写出组件;
结合Flink分布式能力,可以大规模扩展到上千并发度。
未来规划
钱大妈将和阿里云实时计算Flink团队继续共建和完善这一套风控技术方案。其中在Flink CEP未来规划也将围绕三个主要方向展开:
Flink CEP能力的进一步增强;
Flink CEP SQL的动态能力;
Flink + DSL的Native支持(目前已提供 Flink + Drools 预览版能力)。