阿里云Serverless异步任务处理系

异步任务处理系统中的数据分析

数据处理、机器学习训练、数据统计分析是最为常见的一类离线任务。这类任务往往都是经过了一系列的预处理后,由上游统一发送到任务平台进行批量训练及分析。在处理语言方面,Python由于其所提供的丰富的数据处理库,成为了数据领域最为常用的语言之一。函数计算原生支持Pythonruntime,并支持快捷的引入第三方库,使得使用函数计算异步任务进行处理变得极为方便。

数据分析场景常见诉求

数据分析场景往往具有执行时间长、并发量大的特点。在离线场景中,往往会定时触发一批大量的数据进行集中处理。由于这种触发特性,业务方往往会对资源利用率(成本)具有较高的要求,期望能够满足效率的同时,尽量降低成本。具体归纳如下:

程序开发便捷,对于第三方包及自定义依赖友好;支持长时运行。能够查看执行过程中的任务状态,或登录机器进行操作。如果出现数据错误支持手动停止任务;资源利用率高,成本最优。

以上诉求非常适合使用函数计算异步任务。

典型案例-数据库自治服务

业务基本情况

阿里云集团内部的数据库巡检平台主要用于对sql语句的慢查询、日志等进行优化分析。整个平台任务分为离线训练及在线分析两类主要任务,其中在线分析业务的的计算规模达到了上万核,离线业务的每日执行时长也在数万核小时。由于在线分析、离线训练时间上的不确定性,很难提高集群整体资源利用率,并且在业务高峰来时需要极大的弹性算力支持。使用函数计算后,整个业务的架构图如下:

业务痛点及架构演进

数据库巡检平台负责阿里巴巴全网各Region的数据库SQL优化及分析工作。Mysql数据来源于各Region的各个集群,并统一在Region维度进行一次预聚合及存储。在进行分析时,由于需要跨gion的聚合及统计,巡检平台首先尝试在内网搭建大型Flink集群进行统计分析工作。但是在实际使用中,遇到了如下问题:

数据处理算法迭代繁琐。主要体现在算法的部署、测试及发布上。Flink的Runtime能力极大限制了发布周期;对于常见的及一些自定义的第三方库,Flink支持不是很好。算法所依赖的一些机器学习、统计的库在Flink官方Pythonruntime中要么没有,要么版本老旧,使用不便,无法满足要求;走Flink转发链路较长,Flink排查问题困难;峰值时弹性速度及资源均较难满足要求。并且整体成本非常高。

在了解了函数计算后,针对Flink计算部分进行了算法任务的迁移工作,将核心训练及统计算法迁移至函数计算。通过使用函数计算异步任务所提供的相关能力,整个开发、运维及成本得到了极大的提升。

迁移函数计算架构后的效果

迁移函数计算后,系统能够完整承接峰值流量,快速完成每日分析及训练任务;函数计算丰富的Runtime能力支持了业务的快速迭代;计算上相同的核数成本变为了原来Flink的1/3。

函数计算异步任务非常适用于这类数据处理任务。函数计算在降低运算资源的成本同时,能够将您从繁杂的平台运维工作中解放出来,专注于算法开发及优化。

函数计算异步任务最佳实践-KafkaETL

ETL是数据处理中较为常见的任务。原始数据或存在于Kafka中,或存在于DB中,因为业务需要对数据进行处理后转储到其他存储介质(或存回原来的任务队列)。这类业务也属于明显的任务场景。如果您采用了云上的中间件服务(如云上的Kafka),您就可以利用函数计算强大的触发器集成生态便捷的集成Kafka,而无需


转载请注明:http://www.aierlanlan.com/rzdk/9760.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了