微软宣布Azure 容器应用,这是一项在云中运行无服务器容器的新服务。这似乎类似于容器实例服务,它也用于部署完全托管的容器。
这两种服务之间的主要区别是什么?
答案1
这是个好问题,我已经向团队询问过,因为我也不清楚。
总之:如果您要启动多个容器(例如前端/后端/数据库),Azure Container Apps 是更好的选择,因为它配备了 Dapr,它将自动重试请求并添加一些遥测数据。
如果您只需要长时间运行的作业或者不需要多个容器相互通信,则可以使用 Azure 容器实例。
Azure 容器实例
Azure 容器实例 (ACI) 可按需提供单个 Hyper-V 隔离容器 pod。与容器应用相比,它可以被视为较低级别的“构建块”选项。ACI 容器不提供诸如扩展、负载平衡和证书之类的概念。例如,要扩展到五个容器实例,您需要创建五个不同的容器实例。Azure 容器应用在容器之上提供了许多特定于应用程序的概念,包括证书、修订、扩展和环境。用户通常通过其他服务与 Azure 容器实例交互。例如,Azure Kubernetes 服务可以通过虚拟节点在 ACI 之上分层编排和扩展。如果您需要一个不太“固执己见”的构建块,与 Azure 容器应用所优化的场景不一致,那么 Azure 容器实例是一个理想的选择。
Azure 容器应用
Azure 容器应用可让你基于容器构建无服务器微服务。容器应用的独特功能包括:
针对运行通用容器进行了优化,尤其适用于跨容器中部署的许多微服务的应用程序。由 Kubernetes 和 Dapr、KEDA 和 envoy 等开源技术提供支持。通过服务发现和流量拆分等功能支持 Kubernetes 样式的应用和微服务。通过支持基于流量的扩展和从队列等事件源提取数据(包括缩放到零)来启用事件驱动的应用程序体系结构。支持长时间运行的进程并可以运行后台任务。Azure 容器应用不提供对底层 Kubernetes API 的直接访问。如果您需要访问 Kubernetes API 和控制平面,则应使用 Azure Kubernetes 服务。但是,如果您想构建 Kubernetes 样式的应用程序并且不需要直接访问所有本机 Kubernetes API 和群集管理,则容器应用可根据最佳实践提供完全托管的体验。出于这些原因,许多团队可能更愿意使用 Azure 容器应用开始构建容器微服务。
来源: https://docs.microsoft.com/en-us/azure/container-apps/compare-options
答案2
简而言之,ACI 上的工作负载通常由某种流程或触发器启动和停止,并且通常是短暂的,而 ACA 上的工作负载通常是长期运行的流程,例如 Web 应用程序。