《Apache Flink 案例集(2022版)》——5.数字化转型——翼支付Apache Flink 在翼支付的实践应用(下)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 《Apache Flink 案例集(2022版)》——5.数字化转型——翼支付Apache Flink 在翼支付的实践应用(下)

《Apache Flink 案例集(2022版)》——5.数字化转型——翼支付Apache Flink 在翼支付的实践应用(上) https://developer.aliyun.com/article/1227825



生产实践

在实践过程中翼支付遇到了很多挑战,总结起来主要是业务 State 数据一致性、指标重复计算问题、动态规则配置以及全链路监控监控问题。  


首先是指标作业升级过程中,通过指标引擎配置的 job State 数据一致性问题。早期指标作业是通过手动开发,部分业务 State 存储在 HDFS 中,指标引擎配置的 job 没有单独管理业务 State 的数据,老的任务迁移到平台过程中就会遇到数据一致性问题。

 

解决思路是扩展老的计算程序,读取全量 State 数据存储到外部,然后停止老任务。指标引擎配置的作业从指定的 offset 进行数据计算,然后从外部存储补齐原有的指标数据。


image.png


上图展了作业升级的流Task open function 的时读取业务 State 数据存储到部。如是 KeyedStateState 法获取当前 task State 数据,要将 State 进行,然后获取所State 数据引擎。作业通过配置指对应的 offset通过数据的方式进行计算,从而完成数据


image.png


其次是指标作业在不断新增过程中存在的痛点,多个作业重复消费同一个 Kafka 导致上游消费压力大以及指标重复计算的问题。解决方法是对所有作业进行统一优化,对所有消息源进行统一预清洗,按照业务过程分发到对应的数据域 Topic 中。对指标进行统一的口径管理,保证指标不重复计算。目前没有对实时指标进行分层处理,主要为了避免在计算链路过长从而影响业务的时效性。


image.png


第三是Flink CEP 存在的问题。实时决策的模块是通过 Flink CEP 进行规则匹配,最初是通过程序编码的方式实现规则的匹配,然而随着规则越来越多,不便于维护,开发成本也随之增加。Flink CEP 无法进行动态的规则配置以及多个规则并行决策。针对上述问题,翼支付对 Flink CEP 进行了扩展开发来解决规则动态配置以及多个规则决策的问题。


image.png


上图展示了 Flink CEP 扩展开发的逻辑架构。用户通过 RuleManager 配置规则并将规则变更事件发布到 Zookeeper 中,RuleListener 监听到事件的变更后,若是新增规则,则会通过 groovy 动态语言编译生成 RulePattern 实例。随着规则的增多,CEP operator 线程处理效率会下降,需要通过把规则分组绑定到对应的 Worker 上来加速规则处理。CEP operator 线程接收到事件后会分发给所有 Worker,Worker 线程处理完后通过队列发布到 CEP operator 线程,最后发布到下游。


image.png


最后是数据全链路监控的问题。数据流从收集端经过 Flume 传输,再到消息中心指标计算,然后发布到下游的实时决策,不允许大量的数据丢失以及数据延迟。基于以上诉求,需要对整体数据链路进行监控,采用 prometheus + grafana 进行 metrics 的收集以及告警。这里主要针对 Flume 消息中间件进行消息堆积以及丢失的监控。Flink 指标计算主要监控运行状态以及背压情况,下游监控 CEP 决策的时间。对数据链路的监控能够帮助运维快速定位并解决线上的问题。


未来规划

未来,翼支付计划在以下几个方面进行持续探索:  


第一,数据库增量采集的方案统一。目前 MySQL 的采集是使用 Canal 实现的,未来计划使用 Flink CDC 来针对 Oracle 和 MySQL 进行统一的增量采集;


第二,离线实时的批流融合。目前离线数仓通过 Spark SQL 计算,实时数仓使用 Flink SQL 计算,维护两套元数据以及不同的指标口径使得日常工作负荷很大,未来希望使用 Flink 来完成批流一体计算;


第三,Flink 作业自动扩容缩容。目前 Flink 无法进行自动扩容缩容,早晚流量变化较大,会导致较多的资源浪费,计算能力不足的时候只能通过人工进行作业扩容。未来希望基于 Flink 来实现自动扩容,降低运维成本。


image.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
2天前
|
传感器 存储 缓存
[尚硅谷flink学习笔记] 实战案例TopN 问题
这段内容是关于如何使用Apache Flink解决实时统计水位传感器数据中,在一定时间窗口内出现次数最多的水位问题,即"Top N"问题。首先,介绍了一个使用滑动窗口的简单实现,通过收集传感器数据,按照水位计数,然后排序并输出前两名。接着,提出了全窗口和优化方案,其中优化包括按键分区(按水位vc分组)、开窗操作(增量聚合计算count)和过程函数处理(聚合并排序输出Top N结果)。最后,给出了一个使用`KeyedProcessFunction`进行优化的示例代码,通过按键by窗口结束时间,确保每个窗口的所有数据到达后再进行处理,提高了效率。
|
2天前
|
消息中间件 API Apache
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
本文整理自阿里云开源大数据平台徐榜江 (雪尽),关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会。
1803 2
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
|
2天前
|
SQL Java API
官宣|Apache Flink 1.19 发布公告
Apache Flink PMC(项目管理委员)很高兴地宣布发布 Apache Flink 1.19.0。
1787 2
官宣|Apache Flink 1.19 发布公告
|
2天前
|
SQL Apache 流计算
Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
【2月更文挑战第25天】Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
347 3
|
2天前
|
Oracle 关系型数据库 流计算
flink cdc 同步问题之报错org.apache.flink.util.SerializedThrowable:如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
437 0
|
SQL 架构师 API
《Apache Flink 知其然,知其所以然》系列视频课程
# 课程简介 目前在我的公众号新推出了《Apache Flink 知其然,知其所以然》的系列视频课程。在内容上会先对Flink整体架构和所适用的场景做一个基础介绍,让你对Flink有一个整体的认识!然后对核心概念进行详细介绍,让你深入了解流计算中一些核心术语的含义,然后对Flink 各个层面的API,如 SQL/Table&DataStreamAPI/PythonAPI 进行详细的介绍,以及
1295 0
《Apache Flink 知其然,知其所以然》系列视频课程
|
2天前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
721 5
|
2天前
|
XML Java Apache
Apache Flink自定义 logback xml配置
Apache Flink自定义 logback xml配置
263 0
|
2天前
|
消息中间件 Java Kafka
Apache Hudi + Flink作业运行指南
Apache Hudi + Flink作业运行指南
177 1
|
2天前
|
缓存 分布式计算 Apache
Apache Hudi与Apache Flink更好地集成,最新方案了解下?
Apache Hudi与Apache Flink更好地集成,最新方案了解下?
69 0

热门文章

最新文章

相关产品

  • 实时计算 Flink版
  • 推荐镜像

    更多