Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При создании приложения-функции в Azure необходимо выбрать вариант размещения приложения. Azure предоставляет вам следующие варианты размещения для вашего кода функции:
Вариант размещения | Сервис | Доступность | Поддержка контейнеров |
---|---|---|---|
План потребления Flex | Функции Azure | Generally available (GA) | нет |
План категории "Премиум" | Функции Azure | GA | Linux |
Dedicated plan | Функции Azure | GA | Linux |
Контейнерные приложения | Приложения-контейнеры Azure | GA | Linux |
План потребления | Функции Azure | GA | нет |
Варианты размещения функций Azure поддерживаются инфраструктурой службы приложений Azure на виртуальных машинах с ОС Linux и Windows. Вариант размещения, который вы выбираете, определяет следующее поведение:
- Как масштабируется функциональное приложение.
- Ресурсы, доступные для каждого экземпляра приложения-функции.
- Поддержка расширенных функций, таких как подключение к виртуальной сети Azure.
- Поддержка контейнеров Linux.
Выбранный план также влияет на затраты на выполнение кода функции. Дополнительные сведения см. в разделе о выставлении счетов.
В этой статье представлено подробное сравнение различных вариантов размещения. To learn more about running and managing your function code in Linux containers, see Linux container support in Azure Functions.
Обзор планов
Ниже приведены краткие сведения о преимуществах различных вариантов размещения Функции Azure:
Вариант | Льготы |
---|---|
План потребления Flex | Получите быстрое горизонтальное масштабирование с выбором вычислительных возможностей, виртуальных сетей и оплатой по мере использования. В плане потребления Flex экземпляры узла функций динамически добавляются и удаляются на основе настроенного параллелизма каждого экземпляра и количества входящих событий. ✔ Reduce cold starts by specifying one or more pre-provisioned (always ready) instances. ✔ Поддерживает виртуальную сеть для добавленной безопасности. ✔ Платите, когда ваши функции выполняются. ✔ Масштабирование выполняется автоматически, даже во время периодов высокой нагрузки. |
План категории "Премиум" | Automatically scales based on demand using prewarmed workers, which run applications with no delay after being idle, runs on more powerful instances, and connects to virtual networks. В следующих ситуациях обратите внимание на план Azure Functions Premium: ✔ Your function apps run continuously, or nearly continuously. ✔ You want more control of your instances and want to deploy multiple function apps on the same plan with event-driven scaling. ✔ You have a high number of small executions and a high execution bill, but low GB seconds in the Consumption plan. ✔ Вам требуется больше параметров ЦП или памяти, чем предоставляются планами потребления. ✔ Код требуется выполнять дольше максимального времени выполнения, разрешенного в плане потребления. ✔ Требуется подключение к виртуальной сети. ✔ Вы хотите предоставить пользовательский образ Linux, в котором будут выполняться функции. |
Dedicated plan | Выполняйте функции в рамках плана службы приложений по стандартным тарифам плана службы приложений. Лучше всего подходит для долго выполняющихся сценариев, в которых Устойчивые функции нельзя использовать. План службы приложений стоит использовать в следующих случаях: ✔ You have existing and underutilized virtual machines that are already running other App Service instances. ✔ You must have fully predictable billing, or you need to manually scale instances. ✔ Вы хотите запустить несколько веб-приложений и приложений-функций в одном плане ✔ Вам нужен доступ к более крупному выбору размера вычислительных ресурсов. ✔ Полная изоляция вычислений и безопасный сетевой доступ предоставляются в Среде службы приложений (App Service Environment, ASE). ✔ Очень высокая загрузка памяти и высокий масштаб (ASE). |
Контейнерные приложения | Создание и развертывание контейнерных приложений-функций в полностью управляемой среде, размещенной приложениями контейнеров Azure. Используйте модель программирования Azure Functions для создания приложений-функций на основе событий, бессерверные и нативные для облака. Запустите свои функции вместе с другими микрослужбами, API, веб-сайтами и рабочими процессами в качестве размещенных в контейнере программ. Рассмотрите возможность размещения функций в приложениях-контейнерах в следующих ситуациях: ✔ Вы хотите упаковать пользовательские библиотеки в код вашей функции для поддержки линейных бизнес-приложений. ✔ Необходимо перенести выполнение кода из локальных или устаревших приложений в облачные микрослужбы, работающие в контейнерах. ✔ Если вы хотите избежать затрат и сложности управления кластерами Kubernetes и выделенными вычислительными ресурсами. ✔ Вашим функциям требуется высокопроизводительная мощность обработки, предоставляемая выделенными вычислительными ресурсами GPU. |
План потребления | Оплачивайте вычислительные ресурсы только когда ваши функции выполняются (оплата по факту использования) с автоматическим масштабированием. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events. ✔ План размещения по умолчанию, предоставляющий истинное бессерверное размещение. ✔ Вы платите только за использование ваших функций. ✔ Масштабирование выполняется автоматически, даже во время периодов высокой нагрузки. |
Остальные таблицы в этой статье сравнивают параметры размещения на основе различных функций и поведения.
Поддержка операционных систем
В этой таблице показана поддержка операционных систем для вариантов размещения.
Хостинг | Развертывание Linux1 | Развертывание Windows2 |
---|---|---|
План потребления Flex |
✅ Code-only ❌ Контейнер (не поддерживается) |
❌ Не поддерживается. |
План категории "Премиум" |
✅ Code-only ✅ Контейнер |
✅ Code-only |
Dedicated plan |
✅ Code-only ✅ Контейнер |
✅ Code-only |
Контейнерные приложения | ✅ Container-only | ❌ Не поддерживается. |
План потребления |
✅ Code-only ❌ Контейнер (не поддерживается) |
✅ Code-only |
- Linux — это единственная поддерживаемая операционная система для стека среды выполнения Python.
- Развертывания Windows осуществляются исключительно на уровне кода. Функции в настоящее время не поддерживают контейнеры Windows.
Function app time-out duration
Продолжительность тайм-аута функций в функциональном приложении определяется свойством functionTimeout
в файле host.json проекта. Это свойство применяется специально к выполнению функций. After the trigger starts function execution, the function needs to return/respond within the time-out duration. Чтобы избежать времени ожидания, важно создавать надежные функции. Для получения дополнительной информации см. «Повышение производительности и надежности Azure Functions».
В следующей таблице приведены значения по умолчанию и максимальные значения (в минутах) для конкретных планов:
Планирование | По умолчанию. | Максимум1 |
---|---|---|
План потребления Flex | 30 | Неограниченное2 |
План категории "Премиум" | 304 | Неограниченное2 |
Dedicated plan | 304 | Unbounded3 |
Контейнерные приложения | 30 | Unbounded5 |
План потребления | 5 | 10 |
- Независимо от параметра времени ожидания приложения-функции, 230 секунд — это максимальное время, затраченное функцией HTTP для реагирования на запрос. This is because of the default idle time-out of Azure Load Balancer. При более длительной обработке рассмотрите возможность использования асинхронного шаблона Устойчивых функций или отложите работу и получите немедленный ответ.
- There is no maximum execution time-out duration enforced. Однако льготный период, предоставленный выполнению функции, составляет 60 минут во время масштабирования планов Flex Consumption и Premium, а льготный период 10 минут предоставляется во время обновлений платформы.
- Требуется установить для плана службы приложений значение Always On. Льготный период 10 минут предоставляется во время обновлений платформы.
- Время ожидания по умолчанию для среды выполнения узла функций версии 1.x неограниченно.
- Если минимальное количество реплик равно нулю, время ожидания по умолчанию зависит от конкретных триггеров, используемых в приложении.
Поддержка языков
Дополнительные сведения о текущей поддержке нативного языкового стека в функциях см. в Поддерживаемые языки в Azure Functions.
Масштаб
В следующей таблице сравниваются режимы масштабирования различных планов размещения.
Maximum instances are given on a per-function app (Consumption) or per-plan (Premium/Dedicated) basis, unless otherwise indicated.
Планирование | Scale out | Max # instances |
---|---|---|
План потребления Flex | Масштабирование для каждой функции. Решения на основе масштабирования на основе событий вычисляются на основе каждой функции, что обеспечивает более детерминированный способ масштабирования функций в приложении. За исключением HTTP, хранилища Blob (Event Grid) и устойчивых функций, все остальные типы триггеров функций в вашем приложении масштабируются на независимых экземплярах. All HTTP triggers in your app scale together as a group on the same instances, as do all Blob storage (Event Grid) triggers. All Durable Functions triggers also share instances and scale together. | 10005 |
План категории "Премиум" | Событийно-ориентированный. Scale out automatically, even during periods of high load. Инфраструктура Azure Functions масштабирует ресурсы ЦП и памяти, добавляя дополнительные экземпляры хост-функций на основе количества событий, на которых выполняются ее функции. |
Windows: 1006 Linux: 20-1002,6 |
Dedicated plan3 | Ручное/автомасштабирование | 10-30 100 (ASE) |
Контейнерные приложения | Событийно-ориентированный. Scale out automatically, even during periods of high load. Инфраструктура Azure Functions масштабирует ресурсы ЦП и памяти, добавляя дополнительные экземпляры хост-функций на основе количества событий, на которых выполняются ее функции. | 300-10004 |
План потребления | Событийно-ориентированный. Выполняет автоматическое масштабирование даже в периоды высокой нагрузки. Инфраструктура функций масштабирует ресурсы ЦП и памяти путем добавления дополнительных экземпляров узла Функций на основе количества входящих событий триггера. |
Windows: 200 Linux: 1001 |
- During scale-out, there's currently a limit of 500 instances per subscription per hour for Linux apps on a Consumption plan.
- В некоторых регионах приложения Linux в плане "Премиум" могут масштабироваться до 100 экземпляров. Дополнительную информацию см. в статье "План Премиум".
- Конкретные ограничения для различных вариантов плана в Службе приложений см. в разделе Ограничения плана Службы приложений.
- В контейнерных приложениях по умолчанию используется 10 экземпляров, но можно задать максимальное количество реплик, которое имеет общее максимальное значение 1000. Этот параметр учитывается до тех пор, пока доступно достаточно квоты ядер. При создании функционального приложения из портала Azure количество экземпляров ограничено 300.
- Общий объем экземпляров в данном регионе фактически ограничивается квотами памяти региональной подписки.
- Для триггеров http с ограниченным доступом к частной конечной точке масштабирование ограничено не более чем 20 экземплярами.
Cold start behavior
Планирование | Сведения |
---|---|
План потребления Flex | Поддерживает всегда готовые экземпляры для уменьшения задержки при подготовке новых экземпляров. |
План категории "Премиум" | Поддерживает всегда готовые экземпляры для предотвращения холодных запусков, позволяя содержать один или несколько всегда теплых экземпляров. |
Dedicated plan | When running in a Dedicated plan, the Functions host can run continuously on a prescribed number of instances, which means that cold start isn't really an issue. |
Контейнерные приложения |
Зависит от минимального количества реплик: • Если задано равное нулю: приложения могут масштабироваться до нуля при простое, а некоторые запросы могут иметь большую задержку при запуске. • Если задано одно или несколько значений: хост-процесс выполняется непрерывно, что означает, что холодный запуск не является проблемой. |
План потребления | Приложения могут масштабироваться до нуля при простое, что означает, что некоторые запросы могут иметь большую задержку при запуске. The consumption plan does have some optimizations to help decrease cold start time, including pulling from prewarmed placeholder functions that already have the host and language processes running. |
Лимиты услуг
Ресурс | План потребления Flex | План категории "Премиум" | Dedicated plan/ASE | Контейнерные приложения | План потребления |
---|---|---|---|---|---|
Длительность времени ожидания по умолчанию (мин) | 30 | 30 | 301 | 3016 | 5 |
Максимальная длительность времени ожидания (мин) | неограниченный9 | неограниченный9 | не ограничено2 | неограниченный17 | 10 |
Max outbound connections (per instance) | неограниченный | неограниченный | неограниченный | неограниченный | 600 активных (всего 1200) |
Максимальный размер запроса (МБ)3 | 210 | 210 | 210 | 210 | 210 |
Максимальная длина строки запроса3 | 4096 | 4096 | 4096 | 4096 | 4096 |
Максимальная длина URL-адреса запроса3 | 8192 | 8192 | 8192 | 8192 | 8192 |
ACU per instance | 210–840 | 100-840/210-250 10 | Различается | 100 | varies |
Максимальный размер памяти (ГБ на экземпляр) | 414 | 3,5–14 | 1.75-256/8-256 | Различается | 1.5 |
Максимальное число экземпляров (Windows | Linux) | n/a | 100015 | зависит от номера SKU | 10011 | 10-30018 | n/a | 100015 | 200 | 100 |
Function apps per plan13 | 1 | 100 | не ограничено4 | не ограничено4 | 100 |
Планы службы приложений | n/a | 100 шт. на одну группу ресурсов | 100 шт. на одну группу ресурсов | n/a | 100 на регион |
Слоты развертывания на каждое приложение12 | n/a | 3 | 1-2011 | Не поддерживается | 2 |
Хранилище (временно)5 | 0,8 ГБ | 21–140 ГБ | 11–140 ГБ | n/a | 0.5 ГБ |
Storage (persisted) | 0 ГБ7 | 250 ГБ | 10–1000 ГБ11 | n/a | 1 ГБ6,7 |
Пользовательские домены для приложения | 500 | 500 | 500 | Не поддерживается | 5007 |
Поддержка TLS/SSL для личного домена | unbounded SNI SSL and one IP SSL connection included | unbounded SNI SSL and one IP SSL connection included | unbounded SNI SSL and one IP SSL connection included | Не поддерживается | включено неограниченное количество SSL-соединений на основе SNI |
Примечания о ограничениях службы:
- By default, the time-out for the Functions 1.x runtime in an App Service plan is unbounded.
- Требуется установить для плана службы приложений значение Always On. Оплата по стандартным тарифам. Льготный период 10 минут предоставляется во время обновлений платформы.
- Эти ограничения задаются в узле.
- Фактическое количество приложений-функций, которые можно разместить, зависит от активности приложений, размера экземпляров компьютера и соответствующего использования ресурсов.
- Ограничение хранилища означает общий размер содержимого во временном хранилище для всех приложений в одном плане службы приложений. Для планов потребления в Linux хранилище в настоящее время составляет 1,5 ГБ.
- Consumption plan uses an Azure Files share for persisted storage. When you provide your own Azure Files share, the specific share size limits depend on the storage account you set for WEBSITE_CONTENTAZUREFILECONNECTIONSTRING.
- On Linux, you must explicitly mount your own Azure Files share.
- Если ваше функциональное приложение размещено в Плане потребления, поддерживается только параметр CNAME. Для функциональных приложений в плане категории "Премиум" или в плане службы приложений вы можете привязать пользовательский домен с помощью записи типа CNAME или A.
- There's no maximum execution time-out duration enforced. Однако льготный период, предоставленный выполнению функции, составляет 60 минут во время масштабирования и 10 минут во время обновлений платформы.
- Workers are roles that host customer apps. Они доступны в трех фиксированных размерах: один виртуальный ЦП/3,5 ГБ ОЗУ; два виртуальных ЦП/7 ГБ ОЗУ; четыре виртуальных ЦП/14 ГБ ОЗУ.
- См. ограничения службы приложений для получения подробностей.
- Including the production slot.
- В настоящее время в данной подписке существует ограничение в 5 000 приложений-функций.
- Размеры экземпляров плана потребления Flex в настоящее время определяются как 2 048 МБ или 4096 МБ. For more information, see Instance memory.
- Flex Consumption plan has a regional subscription quota that limits the total memory usage of all instances across a given region. Дополнительные сведения см. в статье о квотах памяти региональной подписки. Container Apps has Environments and cores quotas per subscription. See Quotas for Azure Container Apps.
- Если минимальное количество реплик равно нулю, время ожидания по умолчанию зависит от конкретных триггеров, используемых в приложении.
- Если минимальное количество реплик задано как одно или больше.
- В контейнерных приложениях можно задать максимальное количество реплик, которое учитывается до тех пор, пока доступно достаточно квоты ядер.
Функции сетей
- Дополнительные сведения см. в разделе "Сеть" в среде "Приложения контейнеров Azure".
- При работе с триггерами виртуальной сети существуют особые рекомендации.
- Only the Dedicated/ASE plan supports gateway-required virtual network integration.
Выставление счетов
Планирование | Сведения |
---|---|
План потребления Flex | Выставление счетов основано на числе выполнений, памяти экземпляров, когда они активно выполняют функции, а также стоимости любых всегда готовых экземпляров. Дополнительные сведения см. в разделе "Выставление счетов за план потребления Flex". |
План категории "Премиум" | Premium plan is based on the number of core seconds and memory used across needed and prewarmed instances. At least one instance per plan must always be kept warm. Этот план обеспечивает наиболее прогнозируемые цены. |
Dedicated plan | Вы платите за приложения-функции в плане службы приложений так же, как и за другие ресурсы Службы приложений, такие как веб-приложения. For an ASE, there's a flat monthly rate that pays for the infrastructure and doesn't change with the size of the environment. There's also a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. Дополнительные сведения см. в обзорной статье ASE. |
Контейнерные приложения | Выставление счетов в приложениях контейнеров Azure основано на типе плана. Дополнительные сведения см. в разделе "Выставление счетов" в приложениях контейнеров Azure. |
План потребления | Вы платите только за время выполнения функций. Плата начисляется на основе числа операций выполнения, времени выполнения и объема использованной памяти. |
For a direct cost comparison between dynamic hosting plans (Consumption, Flex Consumption, and Premium), see the Azure Functions pricing page. Цены на различные параметры Выделенного плана см. на странице цен на Службу приложений. Сведения о ценах на размещение контейнерных приложений см. в разделе о ценах на службы "Приложения контейнеров Azure".
Ограничения на создание новых приложений-функций в существующей группе ресурсов
В некоторых случаях при попытке создать план размещения для приложения-функции в существующей группе ресурсов может возникнуть одна из следующих ошибок:
- Ценовая категория не разрешена в этой группе ресурсов
- <SKU_name> workers aren't available in resource group <resource_group_name>
Это может произойти при соблюдении следующих условий:
- Вы создаете приложение-функцию в существующей группе ресурсов, которая когда-либо содержала другое приложение-функцию или веб-приложение. For example, Linux Consumption apps aren't supported in the same resource group as Linux Dedicated or Linux Premium plans.
- Новое функциональное приложение создается в том же регионе, что и предыдущее приложение.
- Предыдущее приложение каким-то образом несовместимо с новым приложением. Эта ошибка может произойти между номерами SKU, операционными системами или из-за других функций уровня платформы, таких как поддержка зоны доступности.
Причина, по которой это происходит, связана с тем, как планы приложений-функций и веб-приложений сопоставляются с разными пулами ресурсов при создании. Different SKUs require a different set of infrastructure capabilities. Когда вы создаете приложение в группе ресурсов, группа ресурсов сопоставляется с определённым пулом ресурсов. Если вы пытаетесь создать другой план в этой группе ресурсов и сопоставленный пул не имеет необходимых ресурсов, эта ошибка возникает.
Когда происходит эта ошибка, создайте функциональное приложение и план хостинга в новой группе ресурсов.