首页 > 解决方案 > 如何根据数据库中待处理的项目数来扩展 Azure 函数应用程序(后台作业)?

问题描述

因此,假设您有一个允许用户请求工作的应用程序。例如(假设):用户上传视频。在 RDBM 中创建了一个条目,其中包含指向 blob 上的视频的 URL,并且状态设置为“待处理”。

有一个重复时间触发的函数应用程序,它每 10 秒左右执行一次,它从 RDBMS 获取 10 个待处理的作业并执行一些压缩等。

这里的问题是,只要请求数量保持在每 10 秒 10-30 个视频,我们就可以了。但是如果请求的数量突然增加......比如说每 10 秒有 200 个请求,这意味着会有很多待处理的工作,用户必须等待比平时长 10 倍才能看到状态变化。在这种情况下如何自动横向扩展功能应用程序?一定要手动吗?

标签: azurecloudazure-function-appsystem-design

解决方案


有一种更简单的方法可以通过多个同时运行的 Azure Functions 进行扇出和并行处理。

  1. 将 Azure 服务总线队列添加到您的解决方案。
  2. 对于需要处理的每个视频,使用您需要检索和处理视频(如 BlobId)的适当数据将服务总线消息排入队列。
  3. 让您的 Azure 函数由ServiceBusTrigger触发。

随着队列深度的增加,Azure 将启动 Azure Function 的其他实例。在没有更多数据要处理后,它还将在空闲实例中扩展。


推荐阅读