如何解决Azure:运行许多任务的最佳体系结构,每个任务花费5到10秒从Web api触发?
我们正在为此使用Azure服务,并且我们在Azue Web Service应用程序上运行了一个Web api(Flask),并在另一服务中将其连接到PostgreSQL(到目前为止,效果很好,尽管连接有点慢)。无论如何,用户执行的操作会触发一个过程。基本上,我们需要预处理成千上万条记录(介于1000到5000之间),处理每条记录需要5到10秒。
我们考虑过将Azure函数用于此目的,并触发数千个http请求。但是,即使添加了更多实例,请求也不会并行化。看来他们在排队。我与Azure支持人员进行了交谈,他们告诉我这可能不是最佳解决方案,因为Azure功能可以快速运行,而无需花费几秒钟即可执行。
所以我的问题是:在Azure上做这样的事情的最佳架构是什么?我读到有关事件网格的信息,但我一无所知(第一次使用Azure)。基本的解决方案是拥有一个可以接收参数和启动流程的VM,但这会太复杂(而且我们的团队中没有专门负责此工作的开发人员)。
谢谢。
解决方法
为此,我强烈建议您评估天蓝色的持久功能,运行时会自动支持fan out,这意味着您可以非常轻松地实现大规模扩展。确保与这些功能通话的系统也可以处理负载!
基本结构是启动一个协调器功能,然后可以启动多个活动功能,这些功能在必要时可以自己链接在一起,甚至可以扇形展开。您引用的时间安排不是问题,请参见here。您可以在消费计划中愉快地运行所有这些功能。
当然,您需要在此处查看成本,如果您使用了消耗计划,则将按Mb-second付费,即成本与所用内存和所用时间成比例。
,您可以尝试使用Azure Queue存储触发器,当您在Azure队列中添加一条消息时,它将触发Azure函数,是的,它将并行运行 但这有一个限制,但是您可以按文档中提到的那样进行扩展。
Azure Queue storage trigger for Azure Functions
,Matt 的回答是可行的,但是我特别注意到您希望并行化请求(即执行时间是优先事项)。你看过 Azure Batch 吗?它专为大规模并行工作负载而设计。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。