与Azure容器实例相比,什么时候我更喜欢Azure功能,考虑到它们都可以执行一次运行任务并且按使用量计费?
另外,请阅读以下Microsoft Learn Module:
无服务器计算可以被认为是一种功能即服务(FaaS)或托管在云平台上的微服务。
答案 0 :(得分:3)
Azure Functions是一个平台,可让您运行纯代码(而不是容器)。 Azure Functions的优势在于它支持的丰富的绑定集(输入和输出绑定)。如果您想在发生某些情况时执行一段代码(例如,将blob添加到存储帐户中,则会触发计时器,..),那么我肯定会使用Azure Functions。
如果要在短时间内运行一些基于容器的工作负载,并且没有适当的协调器(如Azure Kubernetes Services),则Azure容器实例很有意义。
答案 1 :(得分:2)
如果您想简化应用程序开发模型,其中您的应用程序体系结构具有更精细的微服务,从而通常将各种功能简化为单个功能,则可以考虑使用Azure功能。
在这种情况下,该解决方案需要使用基于事件触发器的用例对现有的Azure应用程序进行扩展,可以更好地选择Azure函数。在此,仅应针对特定事件或触发器按要求调用特定代码(功能),并按需创建和销毁功能实例(按需计算-功能即服务(FaaS))。
在物联网中通常会看到事件驱动的体系结构,您通常可以定义导致Azure功能执行的特定触发器。因此,Azure功能在物联网生态系统中也占有一席之地。
如果解决方案具有快速的爆发和扩展要求,则可以使用容器实例,而如果要求是可预测的扩展,则可以使用VM。
Azure函数避免分配额外的资源(VM),并且仅在该函数正在处理工作时才考虑成本。在这里,我们不需要关心诸如代码将在何处执行,服务器配置,内存等基础结构。对于ACI,成本是每秒的成本,其中基于容器的运行时间进行计算-CaaS(Container As服务)。
ACI可以快速产生一个容器来执行操作,并在完成后删除它,而这样做只需要花费几个小时的时间,而使用专用VM则成本很高。在不需要服务发现,网格和协调功能等编排功能的情况下,ACI可以避免对Kubernetes等编排程序的依赖,从而使人们能够运行一个容器。
主要区别在于,对于Azure函数,该功能是工作单元,而在容器实例中,整个容器都包含工作单元。因此,Azure函数是基于事件触发器来开始和结束的,而容器中的微服务应始终执行。
处理/执行时间也起着至关重要的作用,如果事件处理程序功能要花费10分钟或更长的处理时间来执行,则最好在VM中托管,因为可为功能配置的最大超时为10分钟。
有些典型的解决方案利用了这两种功能,例如,应触发Azure函数以进行最少的处理/决策,然后可以调用容器实例进行特定的突发处理/完整处理。
此外,ACI与AKS一起构成了微服务的强大部署模型,其中AKS可用于微服务和ACI的典型部署,以处理突发的工作负载,从而减少了扩展管理方面的挑战并确保每秒使用成本的有效利用模型。
答案 2 :(得分:0)