Сравнение вариантов размещения Функций Azure
При создании приложения-функции в Azure необходимо выбрать план размещения для приложения. Azure предоставляет следующие варианты размещения для кода функции:
Вариант размещения | Service | Availability | Поддержка контейнеров |
---|---|---|---|
План потребления | Функции Azure | Обычно доступно (GA) | нет |
План потребления Flex | Функции Azure | Предварительный просмотр | нет |
План категории "Премиум" | Функции Azure | Общедоступная версия | Linux |
План ценовой категории "Выделенный" | Функции Azure | Общедоступная версия | Linux |
Приложения-контейнеры | Приложения-контейнеры Azure | Общедоступная версия | Linux |
инфраструктура служб приложение Azure упрощает размещение Функции Azure на виртуальных машинах Linux и Windows. Вариант размещения, который вы выбираете, определяет следующее поведение:
- Как масштабируется приложение-функция.
- Ресурсы, доступные для каждого экземпляра приложения-функции.
- Поддержка расширенных функций, таких как подключение к виртуальной сети Azure.
- Поддержка контейнеров Linux.
Выбранный план также влияет на затраты на выполнение кода функции.
Обзор планов
Ниже приведены краткие сведения о преимуществах различных вариантов размещения:
План потребления
План потребления — это план размещения по умолчанию. Оплата вычислительных ресурсов только при выполнении функций (с оплатой по мере использования) с автоматическим масштабированием. В рамках плана потребления экземпляры узла Функций динамически добавляются и удаляются в зависимости от числа входящих событий.
План потребления Flex
Получите высокую масштабируемость с помощью вариантов вычислений, виртуальных сетей и выставления счетов по мере использования. В плане потребления Flex экземпляры узла функций динамически добавляются и удаляются на основе настроенного параллелизма каждого экземпляра и количества входящих событий.
Вы можете уменьшить количество готовых (всегда готовых) экземпляров. Выполняет автоматическое масштабирование по требованию.
План категории "Премиум"
Автоматически масштабируется по требованию с помощью предварительно подготовленных рабочих ролей, которые запускают приложения без задержки после простоя, выполняются на более мощных экземплярах и подключаются к виртуальным сетям.
Рассмотрим план Функций Azure уровня "Премиум" в следующих ситуациях.
- Приложения-функции выполняются непрерывно или почти непрерывно.
- Вы хотите больше управления экземплярами и хотите развернуть несколько приложений-функций в одном плане с масштабированием на основе событий.
- У вас есть большое количество небольших выполнений и высокий счет за выполнение, но низкий ГБ секунды в плане потребления.
- Вам требуется больше параметров ЦП или памяти, чем предоставляются планами потребления.
- Код должен выполняться дольше, чем максимально допустимое время выполнения в плане потребления.
- Требуется подключение к виртуальной сети.
- Вы хотите предоставить пользовательский образ Linux, в котором будут выполняться функции.
План ценовой категории "Выделенный"
Выполняйте функции в рамках плана службы приложений по стандартным тарифам плана службы приложений. Лучше всего подходит для долго выполняющихся сценариев, в которых Устойчивые функции нельзя использовать.
План службы приложений стоит использовать в следующих случаях:
- Необходимо полностью прогнозировать выставление счетов или вручную масштабировать экземпляры.
- Вы хотите запустить несколько веб-приложений и приложений-функций в одном плане
- Вам нужен доступ к более крупному выбору размера вычислительных ресурсов.
- Полная изоляция вычислений и безопасный сетевой доступ, предоставляемый Среда службы приложений (ASE).
- Высокая загрузка памяти и высокий масштаб (ASE).
Контейнеры приложений
Создание и развертывание контейнерных приложений-функций в полностью управляемой среде, размещенной приложениями контейнеров Azure.
Используйте модель программирования Функции Azure для создания приложений на основе событий, бессерверных, облачных собственных функций. Запустите свои функции вместе с другими микрослужбами, API, веб-сайтами и рабочими процессами в качестве размещенных в контейнере программ.
Рассмотрите возможность размещения функций в приложениях-контейнерах в следующих ситуациях:
- Вы хотите упаковать пользовательские библиотеки с кодом функции для поддержки бизнес-приложений.
- Необходимо перенести выполнение кода из локальных или устаревших приложений в облачные микрослужбы, работающие в контейнерах.
- Вы хотите избежать затрат и сложности управления кластерами Kubernetes и выделенными вычислительными ресурсами.
- Требуется высокопроизводительная мощность обработки, предоставляемая выделенными вычислительными ресурсами ЦП для ваших функций.
Время ожидания приложения-функции
Свойство functionTimeout
в файле проекта host.json указывает длительность ожидания функций в приложении-функции. Это свойство применяется специально к выполнению функций. После запуска триггера выполнения функции функция должна возвращать и реагировать в течение времени ожидания.
В следующей таблице приведены значения по умолчанию и максимальные значения (в минутах) для конкретных планов:
Планирование | По умолчанию. | Максимум1 |
---|---|---|
План потребления | 5 | 10 |
План потребления Flex | 30 | Не ограничено3 |
План категории "Премиум" | 302 | Не ограничено3 |
План ценовой категории "Выделенный" | 302 | Не ограничено3 |
Контейнеры приложений | 305 | Не ограничено3 |
- Независимо от параметра времени ожидания приложения-функции 230 секунд — это максимальное время, в течение которого функция, активируемая HTTP, может реагировать на запрос.
- Время ожидания по умолчанию для среды выполнения Функций версии 1.x не ограничено.
- Гарантируется до 60 минут. Исправления операционной системы и среды выполнения, исправление уязвимостей и масштабирование в поведении по-прежнему могут отменять выполнение функций.
- В плане потребления Flex узел не применяет ограничение времени выполнения. Однако в настоящее время нет гарантий, так как платформа может потребоваться завершить экземпляры во время масштабирования, развертываний или применить обновления.
- Если минимальное количество реплик равно нулю, время ожидания по умолчанию зависит от конкретных триггеров, используемых в приложении.