为后台服务选择 Azure Functions 或容器应用程序取决于多种因素,包括工作负载的性质、性能要求、可扩展性需求和成本考虑。
简单来说,如果您的后台任务是事件触发的、短暂的,并且具有不可预测或间歇性的执行模式,那么 Azure Functions 可能是一种经济高效的解决方案,并且更易于管理,因为成本取决于执行时间和资源消耗(执行单位)。
正如您在上面的函数应用程序中看到的,它使用消耗托管模型,其中成本发生在出站数据传输中,而不是执行次数和时间上。
如果您访问 Azure Functions 托管模型和定价页面,其中消耗计划对于 100 万个请求和每秒 40 万 GB 的执行时间是免费的,它是事件驱动触发器、工作负载的成本最小化解决方案,但如果后台任务调用不频繁,将会产生冷启动开销。
如果您有长时间运行的任务或需要对底层基础设施进行更多控制,Azure 容器应用程序可能会更好。在这里,您将部署容器化应用程序,与无服务器功能相比,这些应用程序可以处理更重的工作负载。
这意味着Azure容器应用程序非常适合具有高性能要求的后台服务,而具有高级或专用托管计划的Azure功能也可以提供高性能,如果您在特定时间段内不使用Azure服务,您可以停止它以减少性能成本。
正如我在答案的第一行中所说,您必须考虑多种因素,例如基础设施管理,例如对资源和环境的控制、按需扩展、超时限制、短期或长期运行的流程类型等。