某电商基于阿里云Flink的实时风控实践

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 客户成功基于阿里云实时计算 Flink 版的企业级CEP能力落地实时风控解决方案,更近一步基于阿里云Flink实现"精准营销"。

背景


许多互联网电商行业客户当前已经基于阿里云云原生的大数据解决方案(DataWorks、MaxCompute、Flink、Hologres)构建起离线和实时数据一体化的数据中台,为各业务线提供BI报表及数据接口支持。电商行业客户在数仓的分析场景外,也面临业务系统中的风控需求。比如:每季度的营销费用中,不少的羊毛党薅走正常用户的利益。羊毛党一方面导致可能导致用户的口碑下降,另一方面原有的活动运营预算迅速攀升从而导致资损。阿里云实时计算Flink通过特有的实时风控能力帮助客户准确识别羊毛党,防止营销预算流失。


客户的预期“实时风控”系统设计中,希望选择一款合适的"规则引擎"做为整体技术架构提供能力支撑。通过规则的动态化,多维度的规则组合来实现业务目标。“实时风控”项目一期基于 Flink 的能力,底层通过 Flink SQL 实现,支持规则上指标阈值的动态化,在初期满足风控专员的一些固定场景。随着系统实际运行后,逐渐暴露出一些开源Flink的能力不满足点,最终客户成功基于阿里云实时计算 Flink 版的企业级CEP能力落地实时风控解决方案,更近一步基于阿里云Flink实现"精准营销"。


业务需求



业务业务需求,所采用的“规则引擎”必须包含如下能力:


"精准营销"主要业务逻辑:

  1. 多种触发形式
  • 定时调度型
  • 事件触发型
  1. 用户分析

需要支持多条件的且、或关系组合

  • 用户自然属性 行为属性 统计分析

统计分析 年龄、性别、所属区域、累计,首次消费、未次消费等

  • 用户行为序列分析

做了事件 A、做了事件 A 紧接着做了事件 B、做了事件 A 且 N 分钟之后做了事件 B、做了事件 A 且 N 分钟之后没有做事件 B、没做事件 A

  1. 多种触达方式
  • 对接下游触达系统
  • 支持退出计划(单规则只触达单用户1次或 N 次,多规则只触达单用户1次或 N 次,黑白名单机制)


其中 用户分析 为配置规则的重点环节,合理的技术引擎必须能支持:

  1. 规则的在线启、停
  2. 规则的以下维度的动态化配置
  • 聚合的字段
  • 分组字段
  • 聚合函数
  • 窗口大小
  • 阈值
  • 计算符号
  • 行为序列的组合


技术实践



通过剖析需求,实时规则和离线规则的本质上是批流场景的问题:

  • 当规则时间选择为:T-1 ~ T-N,对应纯离线表
  • 当规则时间选择为:T     ~ T-N,对应离线表+实时表
  • 当规则时间选择为:T     ~ T+N,对应实时表+流式数据


客户的技术实施中还考虑了业务系统运行中的实际问题,并且将这些目标融入在平台设计中:

  • 规则变化是常见的吗?是高频的吗?

是常见的,但不是高频的。规则的变化通常是由于业务策略发生变化,类似表结构的变化,业务中比较常见,但并不是高频的修改。

  • 当规则个数为0时,直接丢弃数据,是否可以满足用户需求?

可以丢弃数据。基于业务需求,先有规则,再有规则的计算。

  • 当规则被删除/更新之后,直接丢弃部分匹配事件,是否可以满足用户需求?

可以丢弃部分匹配事件

  • 是否需要通知机制,知道当前规则生效/更新等状态变化?

不需要。但设计上应该将 执行引擎 和 规则描述 分开在两个系统中,以便能直接查看到现有的规则。可以通过一条特殊的规则如"Export All Rules"导致出有存量规则信息(含规则ID,规则内容,规则状态)。

  • 是否需要多规则?

如果需要多规则、是否所有规则的 Key 是一样的

如果需要多规则、两层结构是否可以满足需求

如果需要多规则,是否有需求,某些数据只针对特定规则生效

需要多规则,且不同规则的 Key 可能不一致。即动态 KeyBy。例如:

规则

聚合字段

Rule1

{member_id: A}

Rule2

{member_id: A; shop_id:E01}

  • 是否还有其他需求?

规则在定义时是否能指定 Flink 内置的特定累加器和需要累计的字段

  • 统计型规则如何和 CEP 在同一个 Flink Job 内完成对接?

通过 CEP 动态规则(含累加器选择)将纯统计规则看作是特定的 CEP 场景


针对其中流式序列型数据,开源Apache Flink CEP 实现有两个困难点

  • Flink 社区现有的 CEP API 不支持动态改 Pattern(无法满足上层规则中台、风控中台的可集成性)
  • Flink 社区现有的 CEP API 不支持时间驱动状态跳变


阿里云工程师和客户共同攻坚,使用阿里云 Flink 的方案顺利落地。其中特别是 Flink + Hologres 提供的动态CEP规则替换能力,完美弥补了开源Flink能力的局限。规则作业发布后线上持续运行期间修改规则条件和规则阈值,不需要进行任务发布和重启。

  • 将 Flink作业逻辑开发 和 规则描述 两者完全解耦开
  • 规则描述存储在Hologres中,便于查看规则状态和历史版本
  • 规则变化时只修改Hologres中的规则,Flink自动加载完成规则更新
  • 结合Flink生态,可以轻松扩展事件源组件和事件写出组件
  • 结合Flink分布式能力,可以大规模扩展到上千并发度



该技术方案已经顺利在客户上线并在生产环境应用,在该方案中并不引入新的技术组件和编程语言,最大化复用Flink资源来实现新业务场景,降低了新组件可能引入的潜在运维风险。另一方面也极大降低了团队的学习成本,将实时计算的人力最高效的释放出来。


未来规划


关于阿里云实时计算Flink在风控方向的未来规划将围绕三个主要方向展开:

  1. Flink CEP能力的进一步增强
  2. Flink CEP SQL的动态能力
  3. Flink + DSL的Native支持(目前已提供 Flink + Drools 预览版能力
相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
1月前
|
SQL 分布式计算 关系型数据库
阿里云E-MapReduce Trino专属集群外连引擎及权限控制踩坑实践
本文以云厂商售后技术支持的角度,从客户的需求出发,对于阿里云EMR-Trino集群的选型,外连多引擎的场景、Ldap以及Kerberos鉴权等问题进行了简要的实践和记录,模拟客户已有的业务场景,满足客户需求的同时对过程中的问题点进行解决、记录和分析,包括但不限于Mysql、ODPS、Hive connector的配置,Hive、Delta及Hudi等不同表格式读取的兼容,aws s3、阿里云 oss协议访问异常的解决等。
|
22天前
|
SQL 存储 API
阿里云实时计算Flink的产品化思考与实践【下】
本文整理自阿里云高级产品专家黄鹏程和阿里云技术专家陈婧敏在 FFA 2023 平台建设专场中的分享。
110419 10
阿里云实时计算Flink的产品化思考与实践【下】
|
29天前
|
弹性计算 网络协议 关系型数据库
网络技术基础阿里云实验——企业级云上网络构建实践
实验地址:<https://developer.aliyun.com/adc/scenario/65e54c7876324bbe9e1fb18665719179> 本文档指导在阿里云上构建跨地域的网络环境,涉及杭州和北京两个地域。任务包括创建VPC、交换机、ECS实例,配置VPC对等连接,以及设置安全组和网络ACL规则以实现特定服务间的互访。例如,允许北京的研发服务器ECS-DEV访问杭州的文件服务器ECS-FS的SSH服务,ECS-FS访问ECS-WEB01的SSH服务,ECS-WEB01访问ECS-DB01的MySQL服务,并确保ECS-WEB03对外提供HTTP服务。
|
1月前
|
云安全 人工智能 安全
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
1月前
|
弹性计算 NoSQL 测试技术
倚天使用|Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
137503 3
|
1月前
|
分布式计算 关系型数据库 OLAP
阿里云AnalyticDB基于Flink CDC+Hudi实现多表全增量入湖实践
阿里云AnalyticDB基于Flink CDC+Hudi实现多表全增量入湖实践
72 0
|
关系型数据库 MySQL Java
为什么 Flink 无法实时写入 MySQL?
Flink 1.10 使用 flink-jdbc 连接器的方式与 MySQL 交互,读数据和写数据都能完成,但是在写数据时,发现 Flink 程序执行完毕之后,才能在 MySQL 中查询到插入的数据。即,虽然是流计算,但却不能实时的输出计算结果?
为什么 Flink 无法实时写入 MySQL?
|
2月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
480 5
|
1月前
|
SQL Java API
官宣|Apache Flink 1.19 发布公告
Apache Flink PMC(项目管理委员)很高兴地宣布发布 Apache Flink 1.19.0。
1313 1
官宣|Apache Flink 1.19 发布公告

相关产品

  • 实时计算 Flink版