深度揭秘阿里云函数计算异步任务能力

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
注册配置 MSE Nacos/ZooKeeper,118元/月
函数计算FC,每月15万CU 3个月
简介: 在本篇中我们将会进一步走进函数计算异步任务,介绍异步任务的调度方案以及系统在可观测性方面所支持的各项功能。

作者: 渐意


在上篇文章《解密函数计算异步任务能力之「任务的状态及生命周期管理」》中,我们介绍了任务系统的状态管理,并介绍了用户应如何根据需求,对任务状态信息进行实时的查询等操作。在本篇中我们将会进一步走进函数计算异步任务,介绍异步任务的调度方案以及系统在可观测性方面所支持的各项功能。


任务调度


任务调度多指系统根据当前负载情况,将不同任务放到合适的计算资源中去执行的相关操作。一个完善的调度系统往往需要平衡不同特点的任务间的隔离以及效率最优这两个需求。函数计算异步任务采用了独立队列模型及自动负载均衡策略,具备在不影响处理性能的前提下进行多租隔离的能力。


Serverless Task 任务调度模型


当用户提交一次任务后,系统会将该任务转换为一条消息,并通过异步下发的方式放入到内部队列中。一条消息的处理流程如下图所示:


1.png

图 1


整个系统在任务调度方面的多租隔离及消息积压控制方面主要依赖的是 Scheduler 对于队列的消费及控制。我们事先会为每一位用户划分一个账号级别的队列,该用户的所有函数的异步调用(包括任务调用)会共享该队列。


这样的模型结构会保证每个用户的异步执行请求(包括任务调用)均不会受到其他用户的调用情况的影响。但是在一些大规模应用场景,如一个用户的函数很多,并且每个函数的调用量都很大的情况下,所有的异步消息共用一个队列难免造成调用间的相互影响。部分长尾调用可能会过多的消耗队列的资源,导致其他函数的执行出现饥饿的现象。


为了避免这种情况影响重要函数的执行,函数计算提供了更细力度的队列 - 函数级别的队列。可以通过对每个不同函数设置单独的队列,确保高优先级函数的消费情况不会受同账号下的其他函数执行的影响。队列间的关系如下图所示:image.gif


2.png

图 2


典型的应用场景


假设某用户 A 具有 2 个不同的任务函数。其中一个任务 A 由于下游服务的限制,需要一个消息一个消息的执行;而另外一个任务 B 是大并发任务,并且希望尽快执行完。在默认模式下,任务 A 和 B 共享同一个用户队列;这时会出现如下场景:任务 A 由于具有并发度限制,函数计算侧会对整个任务队列进行出队速率控制。这就导致了任务 B 的任务迟迟无法出队。而当任务 A 执行完后,任务 B 得到了出队机会,此时并发度升高,任务 B 的消息抢占了资源池进行执行,任务 A 又变得难以出队,很长时间也无法开始一次执行。这样的结果就是无论 A 还是 B 都受到了对方业务的严重干扰。


当进行队列调整后,任务 A 和 B 分别独占队列。在这种情况下任务 A 和 B 的消费速度不受对方影响,都可以达到自身的诉求。


目前 Serverless Task 提供了任务积压大盘,您可以在任务界面获取目前已经积压的任务数,综合分析是否需要开启函数的独占队列。


Serverless Task 任务队列负载均衡模型


上面介绍了如何通过函数级别队列来避免出现 “Noisy Neighbour” 问题。但是在一些场景下,如果任务的并发量级过大,即便对该任务划分了单队列,也会导致任务的积压。这个问题的解决需要引入 Serverless Task 的负载均衡策略。


函数计算的任务处理模块具有 Partition 的概念。每个用户默认属于一个 Partition,负责该 Partition 的 Scheduler 会监听用户对应的任务队列。当出现严重积压时,我们会为用户按照负载情况分配多个 Partition,并交由不同的 Scheduler 负责消费,来提升任务整体的消费速度。


3.png

图 3


可以看到,阿里云函数计算在任务队列管理方面默认做到了多租隔离的能力,可以适用于绝大多数场景。针对一些重负载、长执行、并发量大的场景,函数计算还支持横向扩容,加快消费速度。在任务隔离方面,函数计算支持针对不同优先级的函数进行单独隔离,避免出现 Noisy Neighbour 的问题。


可观测性

任务的可观测能力是任务系统必不可少的能力之一。强大的可观测性将有助于业务方减少在任务运行的各个阶段所需要额外进行的工作量。


  1. 开发阶段:任务的在线调试能力、运行结果的 Debug 能力将直接影响业务上线进度;
  2. 业务常规运行阶段:各种监控、流量情况的统计以及运行时日志将协助用户快速了解业务的发展、变化,以及出现故障时的快速定位 & 处理;
  3. 阶段性审计:任务的历史记录存储及保留将为用户提供良好的可追溯能力,可以根据历史信息进行后续的业务规划。


ServerlessTask 可观测性支持 - 开发测试阶段


业务的开发阶段最主要的诉求就是快速调试并定位问题。在对该阶段的支持中,ServerlessTask 提供了登录实例及实时日志的能力。当代码开发并上传后,测试 - debug - 修改代码 - 再次测试的流程可以全部在控制台完成,极大的提高了研发效率。如果有需要性能调试、第三方 Binary 调试(如音视频处理领域的 FFmpeg 调试)等可以借助登录实例功能完成。操作流程如下所示:


选择想登录实例的任务,点击实例链接。image.gif


4.png


会进入到实例监控页面,点击右上角的登录实例功能,即可登录到对应的实例上。


ServerlessTask 可观测性支持 - 业务上线后运行阶段


当业务上线后,经常容易出现因容量预估不足导致下游系统无法承载压力,导致故障。因此 ServerlessTask 提供了运行时指标,即一段时间内的任务提交数、完成数及执行情况。用户可以根据这张指标图快速了解当前业务的负载情况。当用户任务的下游消费较慢,可能造成任务积压,这种情况也很容易在指标图中反映出,进而快速做出相应的反应。目前 ServerlessTask 所提供的相关指标如下:


5.png

image.gif

任务监控大盘提供以下任务监控数据:


6.jpeg


在快速定位问题方面,函数计算支持实时查看函数日志及实例指标。您可以进入到任务的列表页面,找到实际执行失败的任务,进入日志页面及实例页面进行问题定位:


7.png


ServerlessTask 可观测性支持 - 阶段性审计


当线上任务运行一段时间后,往往需要进行一系列的阶段性审计工作,比如上一周的执行总任务数,执行失败的任务数及执行失败的时间。目前除了控制台以外,函数计算提供了丰富的 API 能力来进行任务的审计工作。主要包括以下几方面能力:


  1. 根据状态进行过滤,只查询某一个状态的执行;
  2. 根据触发时间进行过滤,如查询过去某一段时间内发起的任务;
  3. 根据任务名称查询。如果您的任务具有业务上下游的 TraceID,您可以在触发任务时指定一个有意义的任务ID。后续可以根据 ID 前缀进行范围查询;


上面的几个过滤方式可以组合,达到更便捷的需求。控制台所支持的过滤条件如下图所示:image.gif


8.png


更多参数内容可参考:

https://help.aliyun.com/document_detail/256588.html


ServerlessTask 可观测性支持 - 死信队列及业务补偿


在消息领域,有一个非常重要的概念 - 死信队列。当一些消息无法被消费时,这些消息往往需要存储到一个地方,以便后续人为的介入处理,避免因未进行处理而造成业务损失。Serverless Task 也支持了这样一类功能。您可以对 Serverless Task 设置目标功能;当任务执行失败后,函数计算支持自动将执行失败的上下文信息推送到消息队列等消息服务中,以便后续处理。如果您的处理逻辑支持自动化,函数计算还支持将失败任务的上下文信息推送回函数计算,执行一段您的自定义业务逻辑来实现业务补偿。


您可以在异步调用配置页面配置成功及失败目标。


9.png


更多配置内容请参考:

https://help.aliyun.com/document_detail/415755.htm


综上所述,Serverless Task 所提供的可观测能力可以有效支持任务全生命周期的监测需求。所有控制台能力均可以使用开放 API 进行定制化开发,来满足更多的需求。Serverless Task 的目标功能除了可以做到任务失败补偿以外,还可以作为 Event-Driven 模式的数据源,自动的将处理后的事件投递到下游服务中。


往期文章


1、异步任务处理系统,如何解决业务长耗时、高并发难题


2、函数计算异步任务能力介绍-任务触发去重


3、解密函数计算异步任务能力之-任务的状态及生命周期管理



Servereless 近期热门活动推荐


10.png


Serverless 函数计算评测征文活动来啦,6 月 28 日-7 月 31 日期间,参与产品评测投稿发布文章,即有机会获得 Beats 耳机、机械键盘、千元天猫超市卡、优酷会员季卡诸多好礼等你赢取!投稿方向可参考(但不限于):


  • 您对函数计算 FC 产品能力的体验和建议,帮助其他用户选用 Serverless 服务。
  • 使用函数计算 FC 创建应用的场景评测,如基于函数计算 FC 搭建云上博客、搭建弹性高可用 Serverless Web 应用、构建基于 Serverless 架构的弹性高可用视频处理系统等。


更多活动详情,请扫码移步官网了解:


11.png


https://developer.aliyun.com/topic/serverless2022


点击此处,一起投稿吧!

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
打赏
0
1
0
0
12662
分享
相关文章
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
企业级API集成方案:基于阿里云函数计算调用DeepSeek全解析
DeepSeek R1 是一款先进的大规模深度学习模型,专为自然语言处理等复杂任务设计。它具备高效的架构、强大的泛化能力和优化的参数管理,适用于文本生成、智能问答、代码生成和数据分析等领域。阿里云平台提供了高性能计算资源、合规与数据安全、低延迟覆盖和成本效益等优势,支持用户便捷部署和调用 DeepSeek R1 模型,确保快速响应和稳定服务。通过阿里云百炼模型服务,用户可以轻松体验满血版 DeepSeek R1,并享受免费试用和灵活的API调用方式。
157 12
阿里云 EMR Serverless Spark 在微财机器学习场景下的应用
面对机器学习场景下的训练瓶颈,微财选择基于阿里云 EMR Serverless Spark 建立数据平台。通过 EMR Serverless Spark,微财突破了单机训练使用的数据规模瓶颈,大幅提升了训练效率,解决了存算分离架构下 Shuffle 稳定性和性能困扰,为智能风控等业务提供了强有力的技术支撑。
155 15
美的楼宇科技基于阿里云 EMR Serverless Spark 构建 LakeHouse 湖仓数据平台
美的楼宇科技基于阿里云 EMR Serverless Spark 建设 IoT 数据平台,实现了数据与 AI 技术的有效融合,解决了美的楼宇科技设备数据量庞大且持续增长、数据半结构化、数据价值缺乏深度挖掘的痛点问题。并结合 EMR Serverless StarRocks 搭建了 Lakehouse 平台,最终实现不同场景下整体性能提升50%以上,同时综合成本下降30%。
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
云大使 X 函数计算 FC 专属活动上线!享返佣,一键打造 AI 应用
如今,AI 技术已经成为推动业务创新和增长的重要力量。但对于许多企业和开发者来说,如何高效、便捷地部署和管理 AI 应用仍然是一个挑战。阿里云函数计算 FC 以其免运维的特点,大大降低了 AI 应用部署的复杂性。用户无需担心底层资源的管理和运维问题,可以专注于应用的创新和开发,并且用户可以通过一键部署功能,迅速将 AI 大模型部署到云端,实现快速上线和迭代。函数计算目前推出了多种规格的云资源优惠套餐,用户可以根据实际需求灵活选择。
Serverless + AI 让应用开发更简单,加速应用智能化
Serverless + AI 让应用开发更简单,加速应用智能化
7分钟玩转 AI 应用,函数计算一键部署 AI 生图大模型
人工智能生成图像(AI 生图)的领域中,Stable Diffusion WebUI 以其强大的算法和稳定的输出质量而闻名。它能够快速地从文本描述中生成高质量的图像,为用户提供了一个直观且高效的创作平台。而 ComfyUI 则以其用户友好的界面和高度定制化的选项所受到欢迎。ComfyUI 的灵活性和直观性使得即使是没有技术背景的用户也能轻松上手。本次技术解决方案通过函数计算一键部署热门 AI 生图大模型,凭借其按量付费、卓越弹性、快速交付能力的特点,完美实现低成本,免运维。

云原生

+关注

相关产品

  • 函数计算