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