我目前有一个.NET Core应用程序作为Azure应用程序服务运行,并且我需要它每天仅执行几次“工作”。为了节省按小时计费,这是我开发的解决方案:
这是fine,因为它为我节省了大量成本,因为我只需要支付App Service Plan扩展到高级级别的时间。但是,这绝对不是理想的。
我的问题是-为了完成我想做的事情,应该实施哪种设计模式?我需要大量的计算资源,但一天仅需要几个小时。我知道AWS有可以配置的“现货”实例-Azure中是否有类似的机制?
理想情况下,我可以实施一种解决方案,让我只在我真正需要它时(例如:每天数次,而太阳升起时)才支付这些繁重的计算资源]
感谢您的见解和帮助!
是,您可以切换到无服务器。托管前端在存储帐户上,后端移动到Azure功能(消费计划)。
PS:如果它是一个长期运行的过程,除非您使用持久功能,否则它可能不是最佳解决方案。
很难用工作负载的全部描述作为“大量计算”的答案来回答这个问题。
如果您可以将“计算”放入Azure Functions,则采用消耗计划实现无服务器化可能是最好的解决方案。但是,单个函数执行具有给定的超时,因此您需要查看您的应用是否符合要求。
作为替代,您可以将您的应用程序放入Azure Container Instance,然后按需旋转它。
如果您的工作量非常大,则可以使用Azure Batch。如果您当前的工作量可以通过AppService计划完成,则可能会“过分杀伤”。
相当于AWS竞价型实例称为Azure Spot Virtual Machines。您也可以将它们与Azure Batch一起使用。