Azure 的 Functions 是一种 Serverless 基建,不过它提供了多种用法,计费方式和适用的场景也不太一样。下文对 Flex Consumption plan、Premium plan、Dedicated plan、Container Apps 和 Consumption plan 这 5 种方式进行下对比。

直观表格对比

托管方式 缩放方式 容器支持 执行超时 实例数量限制 适用场景 计费方式
Flex Consumption plan 基于每函数事件驱动缩放,部分触发器类型分组共享实例缩放 默认 30 分钟,最大无限制 受区域总内存使用限制,每函数应用实例数受内存限制 需快速水平缩放、有虚拟网络需求、按使用量付费且希望减少冷启动 基于函数执行次数、执行时实例内存及预配置实例成本
Premium plan 基于事件驱动自动缩放,有预热工作进程 Linux 默认 30 分钟,最大无限制 Windows 最多 100 个,Linux 部分地区可达 20 - 100 个 函数应用持续或近乎持续运行、需更多实例控制、有事件驱动缩放需求、执行次数多但消费计划费用高、代码执行时间长、需虚拟网络连接或自定义 Linux 镜像 基于所需和预热实例的核心秒数及内存使用
Dedicated plan 支持手动或自动缩放 Linux 默认 30 分钟,最大无限制 一般 10 - 30 个,ASE 中可达 100 个 有现有未充分利用虚拟机、需要完全可预测计费、在同一计划运行多个 Web 和函数应用、需要大计算规模或 ASE 提供的安全网络访问的长运行场景 按 App Service 计划常规费率计费,ASE 有固定月费和按 vCPU 计费
Container Apps 根据应用负载自动调整资源分配 Linux 依具体配置和底层资源决定 根据自动缩放机制调整 适合快速部署和运行容器化应用,特别是微服务架构应用,适合容器应用迁移到云端 基于容器实例数量、运行时间、所占用资源(如 CPU、内存等)
Consumption plan 基于事件驱动自动缩放,依传入触发事件数量增减主机实例 默认 5 分钟,最大 10 分钟 Windows 最多 200 个,Linux 最多 100 个,每小时 500 个实例缩放限制 适合函数运行时付费、希望自动缩放且无复杂配置需求 函数运行时按执行次数、执行时间和内存使用计费

展开介绍

更全面的总结对比下。

  1. Flex Consumption plan - 弹性消耗

    • Azure Functions Flex Consumption plan hosting | Microsoft Learn
    • 缩放方式:基于每函数的事件驱动缩放,除特定触发器外,不同函数触发器类型可在独立实例上缩放,如 HTTP、Blob 存储(Event Grid)、Durable Functions 分别成组共享实例缩放,提供更确定的缩放方式。
    • 资源与限制:无容器支持;支持指定预配置实例减少冷启动;支持虚拟网络;函数执行超时默认 30 分钟,最大无限制;每实例内存等资源限制因配置而异,受区域总内存使用限制;每函数应用实例数受内存限制。
    • 适用场景与计费:适合需要快速水平缩放、有虚拟网络需求、按使用量付费且希望减少冷启动的场景;计费基于函数执行次数、执行时实例内存及预配置实例成本。
  2. Premium plan - 函数高级计划

    • Azure Functions Premium plan | Microsoft Learn
    • 缩放方式:基于事件驱动自动缩放,使用预热工作进程,根据函数触发事件数量增加主机实例,在空闲后能无延迟运行应用。
    • 资源与限制:支持 Linux 容器;运行在更强大实例上;函数执行超时默认 30 分钟,最大无限制;Windows 最多 100 个实例,Linux 部分地区可达 20 - 100 个实例;提供更多 CPU 和内存选项。
    • 适用场景与计费:适用于函数应用持续或近乎持续运行、需要更多实例控制、在同一计划部署多个应用且有事件驱动缩放需求、执行次数多但消费计划费用高、代码执行时间长、需虚拟网络连接或自定义 Linux 镜像的场景;计费基于所需和预热实例的核心秒数及内存使用。
  3. Dedicated plan - 应用服务

    • Azure Functions Dedicated hosting | Microsoft Learn
    • 缩放方式:支持手动或自动缩放。
    • 资源与限制:支持 Linux 容器;可在 App Service 计划内以常规费率运行函数;提供完全可预测计费和手动缩放;能访问更大计算规模选项;在 App Service Environment(ASE)中提供完全计算隔离和安全网络访问;内存使用和扩展能力高;函数执行超时默认 30 分钟,最大无限制;实例数一般 10 - 30 个,ASE 中可达 100 个。
    • 适用场景与计费:适合有现有未充分利用虚拟机、需要完全可预测计费、在同一计划运行多个 Web 和函数应用、需要大计算规模或 ASE 提供的安全网络访问的长运行场景;按 App Service 计划常规费率计费,ASE 有固定月费和按 vCPU 计费。
  4. Container Apps - 容器应用环境

    • Azure Container Apps hosting of Azure Functions | Microsoft Learn
    • 缩放方式:具有自动缩放功能,能够根据应用程序的负载自动调整资源分配,可依据传入请求数量或工作负载增减容器实例数量。
    • 资源与限制:支持 Linux 容器,运行环境可靠,资源限制依配置和定价层而定。
    • 适用场景与计费:适合快速部署和运行容器化应用,特别是微服务架构应用,计费基于容器实例数量、运行时间和占用资源等使用情况。
  5. Consumption plan - (按) 消耗

    • Azure Functions Consumption plan hosting | Microsoft Learn
    • 缩放方式:基于事件驱动自动缩放,根据传入触发事件数量添加或删除函数主机实例。
    • 资源与限制:无容器支持;是默认的无服务器托管计划;函数执行超时默认 5 分钟,最大 10 分钟;每实例内存等资源有限;Windows 最多 200 个实例,Linux 最多 100 个实例;有每小时 500 个实例的缩放限制。
    • 适用场景与计费:适合函数运行时付费、希望自动缩放且无复杂配置需求的场景;仅在函数运行时按执行次数、执行时间和内存使用计费。

价格

5 种函数托管方式在价格上的差别不小。

Flex Consumption Plan

它是基于每函数事件驱动缩放的,有些触发器类型还分组共享实例缩放。
计费就看函数执行次数、执行时实例内存,还有预配置实例的成本。要是你配置的预配置实例少,低流量的时候费用就低;可要是高流量,需要大量实例了,那随着实例增多,费用自然也跟着涨,具体花多少钱,得看实际用了多少实例、多少内存,还有执行次数这些情况。
不支持自定义容器。

Premium Plan

它是基于事件驱动自动缩放,还有预热工作进程。计费是根据所需和预热实例的核心秒数以及内存使用情况来的。这个计划适合函数应用持续或者近乎持续运行、执行次数又多的情况。虽说基础费用比 Consumption plan 高些,但要是你的应用使用率高,或者有一些特殊需求,用它反而能把总体成本控制得更好,需要自己做好提前的计划。
支持自定义容器。

Dedicated Plan

它支持手动或自动缩放,计费是按 App Service 计划常规费率来的,要是在 App Service Environment(ASE)里,还有固定月费和按 vCPU 计费。要是你手头有现有没充分利用的虚拟机,或者需要完全可预测的计费,又或者想在同一个计划里运行多个 Web 和函数应用,选它就挺合适。不过要注意,它前期投入成本相对高些。

Container Apps

它是根据容器实例数量、运行时间,还有占用的资源,像 CPU、内存这些来计费的。比如说,你运行一个小型 Linux 容器实例,配置 1 vCPU 和 2GB 内存,跑 1 个小时,费用可能在几美分到几十美分不等,具体得看你在哪个区域,还有那个区域的资源单价是多少。
支持自定义容器。

Consumption Plan

这可是个完全无服务器托管的选项,简单来讲,只有函数运行的时候才会产生费用。它是怎么计费的呢?主要看函数的执行数量、执行时间,还有占用的内存。
举个例子,要是在美国西部区域,有个内存消耗为 512MB 的函数,这个月执行了 3,000,000 次,每次执行就持续 1 秒。咱们来算算账,内存资源消耗费用大概是这样算:
{(3百万秒 * 512GB/1,024) - 0.4百万GB - 秒} * 0.000016美元/GB - 秒 = 17.6美元
函数执行次数费用如下:
(3百万次执行 – 1百万次执行) * 0.20美元 = 0.4美元
把这两项一加,总费用就是 17.6 美元 + 0.4 美元 = 18 美元。
不支持自定义容器。

查看原文