做大量处理的Azure逻辑应用程序?

时间:2018-12-01 00:17:20

标签: azure azure-functions azure-logic-apps

我想创建一个自定义的Azure Logic应用程序,该应用程序需要进行一些繁重的处理。我正在阅读有关此内容的文章。我想描述一下我想做的事情,以目前的了解,然后我希望有人可以指出我的理解不正确的地方,或者指出一种更理想的方法。

我想做的是拿一个在3D网格上运行繁重的计算过程的应用程序,并将其变成要在Azure Logic App流中使用的节点。

到目前为止,我在想的基本形式是:

  1. HTTP触发器应用程序:此逻辑应用程序收到对要处理的3D网格的引用,然后将其保存到Azure商店,并将该引用传递给下一个逻辑应用。
  2. 网格计算流程应用程序:这将接收到3D网格的Azure存储引用。然后,它启动具有许多CPU和GPU的高性能服务器,该高性能服务器下载网格,处理网格,然后将网格上传回Azure存储。然后,此应用将对处理过的网格的引用传递到下一个逻辑应用。最终,这将关闭高性能服务器,从而不会不必要地消耗资源。
  3. 电子邮件通知应用程序:这将接收Azure Storage对处理过的网格的引用,然后向用户发送一封带有下载链接的电子邮件。

这可能吗?到目前为止,我所阅读的内容似乎是可能的。我只是希望有人验证一下,以防我严重误解了一些东西。

我也希望能够获得有关“网格计算流程应用程序”中启动和关闭高性能服务器的机制的一些指导。此页面上Azure文档唯一提及异步,长期任务处理的地方是在此页面上: https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-create-api-app

它讨论要求您启动API应用程序或Web应用程序以接收Azure Logic App请求,然后将状态回溯到Azure Logic Apps。我想知道,是否有可能以无服务器方式执行此操作?因此,“网格计算流程应用程序”将启动Azure功能,从而启动性能更高的服务器,然后另一个Azure功能会定期ping该服务器以报告状态,直到完成为止,然后Azure功能会触发性能更高的服务器,关闭,然后向“网格计算处理应用程序”发出信号,表明它已完成,并继续到下一个逻辑应用程序。可以那样做吗?

任何有关如何更好地处理或思考此问题的意见或指导将不胜感激。这是我第一次接触Azure,因此我同时尝试着使自己对Azure有所了解,并制作这样的系统。

1 个答案:

答案 0 :(得分:1)

应该有可能。目前,我不确定Logic Apps本身是否可以为您创建所有这些东西,但是绝对可以使用Azure功能以无服务器的方式完成。

对于第二步,如果我理解正确,那么您需要使其运行很长时间,以便在完成VM后可以进一步传递它?您真的不需要那个。在无服务器环境中时,请不要考虑长时间运行的任务,并记住一切都是事件。

您可以对将事件放入Azure Blob存储进行响应,这消除了链接的需要。

您的第一步是将内容保存到Azure商店,仅此而已,不需要执行任何其他操作。

您的第二个应用程序,在插入的内容上触发以启动处理。

VM处理您的东西,并将其放入商店中。

电子邮件应用程序触发将内容放入“已处理”文件夹的操作。 另一个应用程序触发同一文件以关闭VM。

通过这种方式,您可以删除长期运行的状态管理并直接链接应用程序,而每个应用程序仅执行其需要执行的操作,然后应用程序可以自动触发先前流程的结果。

如果您在所有步骤中确实都需要某种状态管理/编排,并且希望仍处于无服务器状态,请查看持久的Azure功能。它们是无服务器的,但是它们执行的操作和得到的结果存储在表存储中,因此可以重新创建它并将其还原到以前的状态。当然,一切都会自动为您完成,它只是改变了您可以在其中执行的确切操作,因此仍然持久。 您可能想要执行的实际状态管理可能是跟踪所有VM并尝试重用某些内容的方法,而不是花时间将它们搞乱并杀死它们。但是暂时不要把它复杂化。

https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview

当然,您仍然需要考虑错误处理,例如,如果您的VM在不上传任何内容的情况下就死了,那您将不会错过任何事情。因此,您可以触发特殊流程来处理重复/错误,也许发送不同的电子邮件等。