简介:函数计算作为事件驱动的全托管计算服务,其执行模式天生就与这类 Job 场景非常契合,对上述痛点进行了全方面的支持,助力“任务”的无服务器上云。

作者:冯一博

任务(Jobs),是互联网服务的一种常见场景。在诸如 AI 训练、直播(视频转码)、数据清洗(ETL)、定时巡检等场景下,任务平台能否支持快速的高并发任务启动性能、提供较高的离线计算资源利用率以及丰富的上下游生态是这类场景的核心痛点。函数计算作为事件驱动的全托管计算服务,其执行模式天生就与这类 Job 场景非常契合,对上述痛点进行了全方面的支持,助力“任务”的无服务器上云。

函数计算和 Serverless Jobs

“Job”系统应具备什么能力?

在上述的“Job”场景中,一个任务处理系统应该具有以下能力:

  1. 任务触发:支持灵活的任务触发方式。如支持客户端手动触发,支持事件源触发,支持定时触发等;
  2. 任务编排:能够编排复杂任务流程,管理子任务之间关系,如分支、并行、循环等逻辑;
  3. 任务调度及状态管理:调度任务优先级,多租隔离及任务状态管理,支持多种任务并发度、限流;能够管理任务状态,控制任务的执行等;
  4. 资源调度:解决任务的运行资源问题。这里面包括多种运行时支持,计算资源冷启动延迟控制,在/离线任务混部,最终目标是使得系统具有较高的资源利用率;
  5. 任务可观测性:任务执行历史的查看、审计;任务的执行日志;
  6. 任务调度系统上下游生态:任务调度系统可以自然接入上下游系统。比如与 Kafka/ETL 生态、消息生态等集成的能力。

阿里云函数计算 Serverless Job

函数计算 Jobs 能力全景图如下图所示:

图一:函数计算 Jobs 能力全景图

业界常见任务调度系统 Job 能力对比

表一:常见任务调度系统能力对比

在普遍情况下,像诸如一些云厂商的批量计算产品、开源的 K8s Jobs 等任务调度系统支持的最小粒度一般是按实例级别扩缩容,并且不具有大规模任务(编排)管理的能力,因此比较适用于低并发、重负载、超长时运行的业务(如基因计算、大规模机器学习训练)等;而一些开源流程执行引擎、大数据处理系统的任务调度往往缺少弹性、多租隔离、高并发管理及可视化等一系列能力。函数计算作为免运维的 Serverless 平台,很好的结合了上述不同系统的优点,另外 Serverless 先天的弹性能力很好的支持了任务中普遍存在的高并发波峰波谷场景的需求。

推荐最佳实践 & 客户案例

AI 训练 & 推理

场景的核心诉求:

  1. 同时支持实时推理 + 离线训练,实时推理对冷启动有要求;
  2. 有明显的波峰波谷,计算量大,需要高并发,计算实例间基本不需要协同;
  3. 一般需要容器镜像运行自定义库进行训练。

案例 1:网易云音乐 - 音视频处理平台

网易云音乐的音乐“发现”和“分享”功能依赖对音乐进行基础特征分析及提取。在运行这类推荐算法及数据分析时,需要依赖非常大的算力对音乐原始文件进行处理。网易云音乐音视频离线处理平台在经历了 异步处理模式- 优先及队列优化 - 算法集群虚拟化 - 算法镜像框架化 - 云原生化 这一系列演进后,选择了函数计算作为视频平台的基础设施,有效解决了不断扩大的计算规模所带来的的难以运维、弹性差等问题。

案例 2:数据库自治服务 - 数据库巡检平台

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

案例3:分众传媒 - Serverless 图片处理业务

在广告业务中,运行深度学习算法进行图片处理、比对、识别是比较常见的业务,这类业务往往具有数据来源多样、单实例处理时间不确定、波峰波谷明显、任务可观测要求高等特性。采用自购机器运行服务不但需要考虑机器的运维及资源利用率问题,还比较难以适配多种多样的图片源,难以做到服务的快速上线。

函数计算的多种事件源触发支持为这类业务提供了极大的便利。分众传媒采用 OSS/MNS 触发器触发函数计算,解决数据源多样的问题。用户的图片数据可以上传至 OSS 或者 MNS,对应的触发器则会直接触发函数计算来完成图片处理任务,函数计算的弹性及按量付费模式解决了资源使用率及机器运维的烦恼。在可观测性方面,任务处理实例使用了有状态异步调用模式,对于任何已触发的任务做到了可追溯的能力,方便业务对于执行失败的任务进行排查及重试。

视频转码 & 直播推流 & 录播转直播

直播转录/录播转直播业务往往同时具有业务的实时性、业务的不定时不定量的特点:

  1. 要求直播同时能够随时拉起处理实例,随时停止转录实例;
  2. 业务高峰的时间段集中在日间的几个小时,夜间几乎没有业务请求。因此资源的利用率和成本是主要考虑的因素。

对于视频转码场景除一般的弹性诉求外,往往还对资源规格(CPU)的灵活性有要求,以期待获取更高的资源利用率。如:

  1. 资源规格:由于转码输出码率的不同,出于成本考虑,希望能够灵活弹起不同规格的资源;
  2. 运行时间随机性。由于需要提高转码效率,往往会对视频进行分片处理,因此任务来的瞬间可能需要很高的实例数;
  3. 为了提高转码效率,可能进行分片后分别处理,涉及到多函数间共享数据;
  4. 需要容器镜像方式来运行一些自身的库,并且往往对快速启动;
  5. 由于转码的离线业务属性,任务结束后还需要留存一定的任务记录以便后续审计、问题排查等需求。

案例 1:新东方 - 云教室系统 Serverless 视频处理平台

新东方云教室系统支持了视频直播、转码、点播等新东方所有在线教育场景。随着业务量的增大,由于直播转录及视频转码任务处理平台具有明显的波峰波谷特性,自建机房较低的资源利用率成为了业务的核心痛点。为了提高整体的资源利用率,云教室系统上述功能使用了函数计算,可以根据业务特点灵活选择计算资源的规格,毫秒级冷启动性能以及 "pay as you go" 的付费模式也使得整体的计算资源的利用率非常高,在满足波峰算力的同时让整个系统拥有最低的成本。

在进行业务场景的 serverless 化的过程中,云教室系统使用了阿里云函数计算有状态调用模式。这种模式也是专为 Job 场景打造,能够进行历史记录查询及优雅停止任务的功能。在存储方面,视频临时文件采用了函数计算 - NAS 方案。新东方通过视频平台的函数调度器能够轮询多个函数服务来进行负载均衡,每个服务通过挂载不同的 NAS,在做到了文件共享的同时提高了函数内部 NAS 临时存储的使用率,进一步降低了资源的使用成本。

案例 2:米连 - 直播视频实时合规审核平台

米连的直播相亲业务涉及视频处理的主要任务为视频截帧,在拉流的同时进行视频截帧并上传到目标存储中。这类直播场景由于具有波峰波谷的特性,因此除资源利用率要求外还具有一定的实时性及长时执行的要求。审核平台最终使用了函数计算支持高弹性及长时算力的能力,有效的支撑了业务场景。

数据处理 & ETL

场景的核心诉求:

  1. 弹性,高并发的支持。资源按需付费,种类多样,利用率高,免运维;
  2. 复杂流程的编排支持;
  3. 任务的可观测性能力。

案例:图森未来 - 自动化数据处理平台, 让一切简单可靠

图森未来的无人驾驶技术研发依赖大量的路测试验数据积累,而高效进行路测、快速对路测数据进行处理来指导模型的更新迭代是这类场景的核心诉求。而路测不定时运行,数据入库的流程较长,涉及多个系统交互,算力不确定等特性为流程编排任务为数据处理平台带来了较大挑战。

针对上述情况,图森未来探索数据处理平台的自动化。数据处理平台使用了 Serverless 工作流进行了整体流程的编排,并通过原生支持的消息服务 MNS 解决了云上云下的数据打通问题。

除调度外,图森未来通过使用任务的输入输出映射及状态汇报机制,高效的管理流程中各任务的生命周期及相互间的数据传递,对流程中任务的状态及执行过程中数据更新进行维护,解决了长时不确定长流程的数据处理需求。

总结

结合上述案例及分析,函数计算的弹性、可观测性、队列隔离能力及完整的事件生态极好的支持了这类任务场景。简单总结主要体现在以下几个方面:

  1. 任务的触发

    函数计算支持定时触发器、OSS 触发器、各类消息队列触发器,这为 EDA 架构的应用程序、多种数据来源的数据处理场景提供了丰富的能力;
  2. 任务编排&任务调度

    函数计算原生被阿里云 Serverless 工作流服务无缝集成,Serverless 工作流支持顺序、分支、并行等方式来编排分布式任务,跟踪每个任务的状态转换,并在必要时执行事先定义的重试逻辑。Serverless 工作流 + 函数计算的组合可以很好的支持复杂长流程的运行;
  3. 在资源层面,Serverless 更能体现出其核心优势:开发免运维,并提供高弹性和高可用性保障。

    对比自建,使用无服务器架构后,仅需要按实际任务执行的使用量付费,即节省了成本,也省去了运维的烦恼。函数计算支持多种运行时语言,也支持了运行自定义容器镜像,极大方便了开发调试流程。
  4. 在可观测方面,Serverless 工作流和函数计算对多任务流程、单任务流程提供了丰富的可观测性指标和查询方式,能够便捷的查找历史、观测执行中等任务的指标及日志,方便调试及问题追踪。

在未来,函数计算 - Serverless Jobs 将精耕垂直领域的任务处理场景,包括提供更长的实例执行时间、更丰富的可观测性指标、更强大的任务调度策略及端对端集成能力,致力于为您提供垂直场景下的“最短路径”,助力业务腾飞。

原文链接

本文为阿里云原创内容,未经允许不得转载。

应对 Job 场景,Serverless 如何帮助企业便捷上云的更多相关文章

  1. CODING 再携手腾讯云 Serverless,让开发者跑步上云

    近年来,腾讯云持续在云原生领域打磨和完善产品矩阵,致力于为开发者上云提供更好的产品和服务.继前段时间 CODING CI 助力腾讯云 Serverless 全新应用控制台.持续保障 Serverles ...

  2. MSP---助力企业轻松上云

    一.企业上云的总体步骤 1.传统企业级应用上云方法论概述 2.应用现代化概念 3.应用上云都需要什么 1.评估该应用是否可以上云, 2.上云需要付出多少时间和人力 3.企业级应用案例 4.生成评估报告 ...

  3. 来杭州云栖大会,全面了解企业如何实现云上IT治理

    企业上云的现状与趋势 云计算,如今已经成为了像水和电一般关系到国计民生的国家基础设施.云计算为企业带了前所未有的资源交付效率和运维效率的提升,同时也用全新的技术帮助企业在新的价值网络中创造新的商业赛道 ...

  4. 企业上云这四大要点,你 get 了吗?

    本文由 Platform9(一家专注于云计算.专有云.混合云.OpenStack 以及容器技术的北美初创公司)技术产品营销经理 Akshai Parthasarathy 撰写,描述了企业在向云基础设施 ...

  5. 硬核评测:企业上云的极速存储挑战,华为云全新极速IO云硬盘性能评测

    来源:至顶网 作者:董培欣 借助华为云全新一代极速IO云硬盘开启邀测的时机,至顶网评测实验室展开了一次华为云极速IO云硬盘与超高IO云硬盘的性能对比测试活动,并且尝试通过相关测试成绩,对云硬盘的应用能 ...

  6. SaaS上云工具包为企业应用构筑上云之梯

    导语:本文中,阿里云资深技术专家郑刚将聚焦SaaS上云工具包如何帮助企业上云,包括产品上云.商品上市.服务上心,讲述了SaaS上云工具包为客户和伙伴提供的价值.在SaaS上云工具包整体解决方案的帮助下 ...

  7. 拨开迷雾,找回自我:DDD 应对具体业务场景,Domain Model 到底如何设计?

    写在前面 除了博文内容之外,和 netfocus 兄的讨论,也可以让你学到很多(至少我是这样),不要错过哦. 阅读目录: 迷雾森林 找回自我 开源地址 后记 毫无疑问,领域驱动设计的核心是领域模型,领 ...

  8. DDD(领域驱动设计)应对具体业务场景,Domain Model(领域模型)到底如何设计?

    DDD(领域驱动设计)应对具体业务场景,Domain Model(领域模型)到底如何设计? 写在前面 阅读目录: 迷雾森林 找回自我 开源地址 后记 毫无疑问,领域驱动设计的核心是领域模型,领域模型的 ...

  9. DDD(领域驱动设计)应对具体业务场景,如何聚焦 Domain Model(领域模型)?

    DDD(领域驱动设计)应对具体业务场景,如何聚焦 Domain Model(领域模型)? 阅读目录: 问题根源是什么? <领域驱动设计-软件核心复杂性应对之道>分层概念 Repositor ...

  10. 京东云数据库 RDS助力企业便捷运维

    iPhone6发布那年,京东在国贸等商圈送货最快速度数分钟,包括从下单到送达.这是一个极端的富含营销因素例子.即便如此,常态来看,隔天到货的这种业务模式,也是基于同样的支撑:营销业务.物流业务,大数据 ...

随机推荐

  1. 通过抓包分析RTP包头格式信息

    目录 RTP概览 RTP Header格式 Rtp 数据包拆解 Version Padding X(扩展) CC(CSRC计数) M(marker) PT(payload type) sequence ...

  2. 04.JavaIO流问题

    目录介绍 4.0.0.1 说一下Java IO里面的常见类,字节流,字符流.接口.实现类.方法阻塞? 4.0.0.2 什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多 ...

  3. JS数据扁平化

    最近找到了一些数据扁平化的精品文章,这里分享给大家,希望对大家有所帮助 什么是扁平化 数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组. 举个例子,假设有 ...

  4. 使用Go语言开发一个短链接服务:五、添加和获取短链接

    章节  使用Go语言开发一个短链接服务:一.基本原理  使用Go语言开发一个短链接服务:二.架构设计  使用Go语言开发一个短链接服务:三.项目目录结构设计  使用Go语言开发一个短链接服务:四.生成 ...

  5. P9966 [THUPC 2024 初赛] 机器人 题解

    细节大模拟. 题意 一堆机器人在一起,每个人有左右手和一些指令,依次执行并输出结果. 做法 首先这种指令的执行还算是比较简单的大模拟,一个个实现即可,在此给出我的定义. struct Robot{ i ...

  6. SQL日期操作函数(CONCAT、DATE_FORMAT、LAST_DAY)

    获取某月底日期:SELECT LAST_DAY('2021-07-01') AS month_end_date; 拼接年月格式: CONCAT(DATE_FORMAT(hp.planned_payme ...

  7. #树状数组,离散#C 波动序列

    分析 设\(dp[i][j][0/1/2/3]\)表示前\(i\)个位置当前选的数为\(j\), 且选择的是第一行/第二行/第三行不下降/第三行不上升, 状态转移方程显然,用线段树或者树状数组维护一下 ...

  8. 携手HMS Core统一扫码服务, 兴业证券优理宝App提升用户扫码体验

    兴业证券优理宝App联合华为HMS Core,集成HMS Core统一扫码服务,在提升扫码成功率的同时,还支持C端用户用手机端APP扫描手表端二维码,实现行情在手机与手表间跨终端流转,行情信息,抬腕可 ...

  9. 决策树模型(4)Cart算法

    Cart算法 Cart是Classification and regression tree的缩写,即分类回归树.它和前面的ID3, C4.5等算法思想一致都是通过对输入空间进行递归划分并确定每个单元 ...

  10. openGauss系统函数添加指导

    openGauss 系统函数添加指导 1.函数架构简介 openGauss 内函数的可以分为两个部分: ​ 身份注册声明:openGauss 中存在一个系统表 pg_proc,这个表存放了所有函数的基 ...