azure - 如何根据数据库中待处理的项目数来扩展 Azure 函数应用程序(后台作业)?
问题描述
因此,假设您有一个允许用户请求工作的应用程序。例如(假设):用户上传视频。在 RDBM 中创建了一个条目,其中包含指向 blob 上的视频的 URL,并且状态设置为“待处理”。
有一个重复时间触发的函数应用程序,它每 10 秒左右执行一次,它从 RDBMS 获取 10 个待处理的作业并执行一些压缩等。
这里的问题是,只要请求数量保持在每 10 秒 10-30 个视频,我们就可以了。但是如果请求的数量突然增加......比如说每 10 秒有 200 个请求,这意味着会有很多待处理的工作,用户必须等待比平时长 10 倍才能看到状态变化。在这种情况下如何自动横向扩展功能应用程序?一定要手动吗?
解决方案
有一种更简单的方法可以通过多个同时运行的 Azure Functions 进行扇出和并行处理。
- 将 Azure 服务总线队列添加到您的解决方案。
- 对于需要处理的每个视频,使用您需要检索和处理视频(如 BlobId)的适当数据将服务总线消息排入队列。
- 让您的 Azure 函数由ServiceBusTrigger触发。
随着队列深度的增加,Azure 将启动 Azure Function 的其他实例。在没有更多数据要处理后,它还将在空闲实例中扩展。
推荐阅读
- react-native - react native:如何刷新屏幕(按下按钮时调用api)
- python - python我得到一个错误字典更新序列元素#0的长度为1;我的 python 程序中需要 2
- sql - SQL Server - 条件自联接
- node.js - Node.js 库“Socket.IO”中“房间”的安全性
- nuxt.js - Vue3 中的“设置”钩子有什么优点?
- javascript - todos.unshift 不是函数
- reactjs - 如何使用 React Hook Form 和 Yup 验证自动完成多个 TextField?
- python - 如何跳过pandas中的注释行但保留op文件中的注释行
- php - Codeigniter:问题出在 if else 中。它只适用于 IF 它不会去 else if
- terminal - 通过测试的终端单元测试退出代码颜色更改