【发布时间】:2020-09-19 14:17:27
【问题描述】:
我们为此使用 Azure 服务,并且我们有一个在 Azue Web Service App 上运行的 Web api (Flask),连接到不同服务中的 PostgreSQL(到目前为止一切都很好,虽然连接有点慢)。无论如何,用户执行的操作会触发流程。基本上,我们需要预处理数千条记录(介于 1000 到 5000 条之间),处理每条记录需要 5 到 10 秒。
我们在使用 Azure Functions 时想到了这一点,并触发了数千个 http 请求。但即使我们添加了更多实例,请求也不会并行化。他们似乎在排队。我与 Azure 支持人员进行了交谈,他们告诉我这可能不是最好的解决方案,因为 Azure 功能预计会快速运行,而不需要几秒钟即可执行。
所以我的问题是:在 Azure 上执行此类操作的最佳架构是什么?我读到了一个叫做事件网格的东西,但我不知道(第一次使用 Azure)。基本的解决方案是拥有一个可以接收参数和启动进程的 VM,但这太复杂了(我们的团队中没有可以处理这些的 devops)。
提前致谢。
【问题讨论】:
-
如何触发函数?
-
现在,我们正在向 Azure 函数发送异步 http 请求。它们是同时发送的,我们正在测量它,我在 Azure 功能仪表板中看到所有请求都已收到。但它们不会立即执行(我们在函数的开头和结尾添加日志)。我们还尝试使用仅 1) 记录、2) 睡眠、3) 再次登录的功能,这是相同的行为,而不是并行化。
-
您是否尝试将消息发送到队列并让新消息触发该功能?另外,这可能会提供一些线索:stackoverflow.com/questions/46191002/…
-
不,我没有尝试使用队列。正如我所说,我是 Azure 的新手,所以我现在不提供所有可用的服务 :( 你认为这会使它们并行运行吗?
-
您是在 Azure 函数或应用服务计划托管中使用消费托管选项。因为如果是消费,那么函数应该非常迅速地向外扩展。看到这个:docs.microsoft.com/en-us/azure/azure-functions/…
标签: azure events architecture execution