Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функции Azure — это служба на основе событий, которая расширяет существующую платформу приложений Службы приложений Azure. Он добавляет возможности для реализации кода, активированного событиями в Azure, в партнерской службе и в локальных системах. С помощью функций можно создавать решения, которые подключаются к источникам данных или решениям для обмена сообщениями, что упрощает обработку и реагирование на события. Функции выполняются в центрах обработки данных Azure, которые являются сложными с множеством интегрированных компонентов. В размещенной облачной среде предполагается, что виртуальные машины могут иногда перезапускать или перемещаться, а также происходит обновление систем. Кроме того, приложения-функции обычно зависят от внешних API, служб Azure и других баз данных, которые также подвержены периодической недоступности.
В этой статье подробно описаны некоторые рекомендации по проектированию и развертыванию эффективных приложений-функций, которые остаются работоспособными и обеспечивают высокую производительность в облачной среде.
Выбор подходящего плана размещения
При создании приложения-функции в Azure необходимо выбрать план размещения для приложения. План, который вы выбираете, влияет на производительность, надежность и стоимость. Функции Azure предоставляют следующие планы размещения:
- План потребления Flex
- План категории "Премиум"
- План категории "Выделенный" (Служба приложений)
- План потребления
По возможности используйте план потребления Flex для размещения динамических масштабируемых приложений.
В контексте платформы службы приложений план Premium , динамически размещающий ваши функции, — это план Elastic Premium (EP). Другие выделенные планы (служба приложений) называются «Премиум». Дополнительные сведения см. в плане Azure Functions Premium.
Выбранный план размещения определяет следующие варианты поведения:
- Как масштабируется ваше функциональное приложение в зависимости от спроса и как управляется выделение экземпляров.
- Ресурсы, доступные для каждого экземпляра приложения-функции.
- Поддержка расширенных функций, таких как подключение к виртуальной сети Azure.
Дополнительные сведения о выборе правильного плана размещения и подробном сравнении между планами см. в разделе "Параметры размещения Функций Azure".
При создании приложения-функции выберите правильный план. Функции предоставляют ограниченную возможность переключения на другой план размещения, в первую очередь между планами "Потребление" и "Эластичный премиум". Подробнее см. в статье Планирование миграции.
Правильная настройка хранилища
Для Функций требуется учетная запись хранения, связанная с приложением-функцией. Хост Functions использует подключение учетной записи хранения для таких операций, как управление триггерами и журналирование выполнения функций. Он также используется при динамическом масштабировании приложений-функций. Дополнительные сведения см. в статье Рекомендации по хранению для Функций Azure.
Неправильно настроенная файловая система или учетная запись хранения в приложении-функции может повлиять на производительность и доступность функций. Дополнительные сведения по устранению неполадок с неправильно настроенной учетной записью хранения приведены в статье Устранение неполадок с хранилищем.
Параметры подключения хранилища
Приложения-функции, масштабируемые динамически, могут выполняться из конечной точки Файлов Azure в учетной записи хранения или с файловых серверов, связанных с масштабируемыми экземплярами. Это поведение управляется следующими параметрами приложения:
План "Премиум" и план потребления в Windows поддерживают эти параметры. План потребления Flex не требует этих параметров и использует контейнер хранилища Blob для размещения пакетов развертывания вместо общего ресурса Azure Files.
При создании приложения-функции на портале Azure или с помощью Azure CLI или Azure PowerShell эти параметры создаются при необходимости. При создании ресурсов из шаблона Azure Resource Manager (шаблон ARM) необходимо также включить WEBSITE_CONTENTAZUREFILECONNECTIONSTRING в шаблон.
В первом развертывании с помощью шаблона ARM не включайте WEBSITE_CONTENTSHARE, который создается автоматически.
Для правильной настройки этих параметров можно использовать следующие примеры шаблонов ARM:
- План потребления
- План ценовой категории "Выделенный"
- План "Премиум" с интеграцией с виртуальной сетью
- План "Потребление" со слотом развертывания
Внимание
Служба Файлы Azure в настоящее время не поддерживает подключения на основе удостоверений. План потребления Flex полностью поддерживает управляемые идентичности. Дополнительные сведения см. в статье "Создание приложения без Файлы Azure".
Конфигурация учетной записи хранения Azure
При создании приложения-функции необходимо создать или привязать учетную запись хранения Azure общего назначения, поддерживающую хранилища BLOB-объектов, очередей и таблиц. Для внутренних операций, таких как управление триггерами и ведение журнала выполнения функций, Функции Azure используют службу хранилища Azure. Строка подключения учетной записи хранения для приложения-функции находится в параметрах приложения AzureWebJobsStorage и WEBSITE_CONTENTAZUREFILECONNECTIONSTRING.
При создании этой учетной записи хранения учитывайте следующее:
Чтобы уменьшить задержку, создайте учетную запись хранения в том же регионе, где находится приложение-функция.
Чтобы повысить производительность, используйте для каждого приложения-функции отдельную учетную запись хранения. Этот аспект особенно применим к Durable Functions и функциям, запускаемым Event Hubs.
Для активированных функций Центров событий не используйте учетную запись с включенным Data Lake Storage.
Управление большими наборами данных
При работе на Linux можно добавить дополнительное хранилище, подключив общую папку. Подключение общей папки — это удобный способ обработки большого существующего набора данных. Дополнительные сведения см. в разделе Подключение общих папок.
Организация функций
В рамках своего решения вы можете разрабатывать и публиковать несколько функций. Эти функции часто объединяются в одно приложение-функцию, но они также могут выполняться в отдельных приложениях-функциях. В планах размещения "Премиум" и "Выделенный" (Служба приложений) несколько приложений-функций также могут совместно использовать одни и те же ресурсы, запуская их в одном плане. Группирование функций и приложений-функций может повлиять на производительность, масштабирование, конфигурацию, развертывание и безопасность общего решения.
Для планов "Потребление" и "Премиум" все функции в приложении-функции динамически масштабируются.
Дополнительные сведения о том, как упорядочить функции, приведены в статье Рекомендации по организации Функций.
Оптимизация развертываний
При развертывании приложения-функции помните, что единица развертывания функций в Azure — это приложение-функция. Все функции развертываются в приложении для функций одновременно, как правило, из одного пакета развертывания.
Рассмотрите следующие варианты для успешного развертывания:
Запустите функции из пакета развертывания. Этот подход на основе запуска из пакета обеспечивает следующие преимущества:
- Снижает риск проблем блокировки копирования файлов.
- Можно развернуть непосредственно в производственном приложении и не вызывает перезапуска.
- Все файлы в пакете доступны вашему приложению.
- Производительность развертываний шаблонов ARM повышается.
- Может снизить время холодного запуска, особенно для функций JavaScript с большими деревьями пакетов npm.
Рассмотрите возможность использования непрерывного развертывания для подключения развертываний к решению системы управления версиями. Непрерывные развертывания также обеспечивают возможность выполнения из пакета развертывания.
Для размещения плана "Премиум" рекомендуется добавить триггер прогрева, чтобы уменьшить задержку при добавлении новых экземпляров. Для получения дополнительной информации см. триггер прогрева Azure Functions.
Чтобы свести к минимуму время простоя развертывания, используйте слоты развертывания для планов "Потребление", "Премиум" и "Выделенный". Или настройте последовательные обновления для развертываний с нулевым простоем в плане потребления Flex. Дополнительные сведения см. в разделе "Слоты развертывания Функций Azure " и стратегии обновления сайта в Flex Consumption.
Написание надежных функций
Следуйте принципам проектирования, которые помогают обеспечить общую производительность и доступность функций. К ним относятся следующие:
- Избегайте функций, которые выполняются длительное время
- Планирование обмена данными между функциями
- Функции следует разрабатывать без отслеживания состояния
- Напишите оборонительные функции
Временные сбои распространены в облачных вычислениях, поэтому при доступе к облачным ресурсам используйте шаблон повторных попыток . Многие триггеры и привязки уже реализуют повторные попытки.
Определите приоритеты тестирования интеграции путем непрерывного тестирования функций в контексте полного приложения и конвейеров автоматизации сборки.
Проектирование для безопасности
Учитывайте безопасность на этапе планирования, а не после разработки функций. Дополнительные сведения см. в разделе "Защита функций Azure".
Рассмотрите возможность параллелизма
По мере увеличения спроса на ваше приложение-функцию из-за входящих событий, планы "Потребление" и "Премиум" масштабируют приложения-функции. Важно понять, как приложение-функция реагирует на загрузку и как триггеры можно настроить для обработки входящих событий. Общие сведения приведены в статье Масштабирование на основе событий в Функциях Azure.
Выделенные планы службы приложений требуют настройки масштабирования для функциональных приложений.
Число рабочих процессов
В ряде случаев более эффективно обрабатывать нагрузку, создавая несколько процессов-обработчиков языка в рамках экземпляра перед масштабированием. Параметр FUNCTIONS_WORKER_PROCESS_COUNT определяет максимальное количество процессов-обработчиков языка. Значение по умолчанию для этого параметра — 1, что означает, что множественные процессы не используются. После достижения максимального числа процессов функциональное приложение масштабируется на большее количество экземпляров для обработки нагрузки. Этот параметр не применяется к функциям библиотеки класса C#, которые выполняются в хост-процессе.
При использовании FUNCTIONS_WORKER_PROCESS_COUNT плана Premium или выделенного плана (службы приложений) учитывайте количество ядер, предоставляемых вашим планом. Например, EP2 плана "Премиум" предоставляет два ядра, поэтому при необходимости следует начинать со значения 2, увеличивая его по мере необходимости на два ядра до достижения максимума.
Конфигурация триггера
При планировании пропускной способности и масштабирования понять, как различные типы триггеров обрабатывают события. Некоторые триггеры позволяют управлять поведением пакетной обработки и параллелизмом. Настройка этих значений может помочь каждому экземпляру масштабироваться соответственно требованиям вызываемых функций. Эти параметры конфигурации применяются ко всем триггерам в приложении-функции и сохраняются в файле host.json для приложения. Сведения о параметрах см. в разделе "Конфигурация" ссылки на конкретный триггер.
Дополнительные сведения о том, как Функции обрабатывают потоки сообщений, приведены в статье Надежная обработка событий Функций Azure.
Планирование подключений
Ограничения подключения применяются к приложениям-функциям, работающим в плане потребления. Эти ограничения применяются к каждому экземпляру. Из-за этих ограничений и в качестве общей рекомендации оптимизируйте исходящие подключения из кода функции. Дополнительные сведения см. в статье "Управление подключениями в Функциях Azure".
Специфика для конкретных языков
Для выбранного языка учитывайте следующие аспекты:
Использование токена отмены (только внутри процесса).
Максимальная доступность
Холодный запуск является ключевым фактором для бессерверных архитектур. Дополнительные сведения см. в разделе "Холодный запуск". Если холодный запуск является проблемой для вашего сценария, ознакомьтесь с разделом "Общие сведения о бессерверном холодном запуске".
Рекомендуется использовать планы Flex Consumption и Premium для уменьшения холодных запусков при сохранении динамического масштабирования. Используйте следующее руководство, чтобы уменьшить холодные запуски и повысить доступность во всех планах размещения.
Эффективное отслеживание
Функции Azure обеспечивают встроенную интеграцию с Azure Application Insights для мониторинга выполнения функций и трассировок, написанных из кода. Дополнительные сведения см. в статье "Мониторинг выполнения" в Функциях Azure. Azure Monitor также предоставляет средства для мониторинга работоспособности самого приложения-функции. Дополнительные сведения см. в разделе Мониторинг функций Azure.
Помните о следующих рекомендациях при использовании интеграции Application Insights для мониторинга функций:
Удалите параметр приложения AzureWebJobsDashboard . Этот параметр поддерживается в более ранних версиях функций. Удаление
AzureWebJobsDashboardповышает производительность функций.Просмотрите журналы Application Insights. Если данные, которые вы ожидаете найти, отсутствуют, рассмотрите возможность настройки параметров выборки для лучшего отслеживания сценария мониторинга.
excludedTypesИспользуйте параметр, чтобы исключить определенные типы из выборки, напримерRequestилиException. Дополнительные сведения см. в разделе Настройка выборки.
Функции Azure также позволяют осуществлять отправку журналов, создаваемых системой и пользователем, из Функций Azure в журналы Azure Monitor. Интеграция журналов Azure Monitor в настоящее время находится на этапе предварительной версии.
Встроенная избыточность
Потребности вашего бизнеса могут подразумевать постоянную доступность функций, даже во время сбоя в работе центра обработки данных. Сведения об использовании многорегионального подхода для постоянного выполнения критически важных функций см. в статье "Надежность" в Функциях Azure.