Масштабировать функцию Azure самостоятельно (одна функция) - PullRequest
0 голосов
/ 20 декабря 2018

Я создал функцию Azure, используя Visual Studio в качестве проекта библиотеки, у меня есть один проект с 12 функциями, например

enter image description here

На данный момент моя функция размещенав Dedicated AppService Plan и одна из функций (EventHub Listener) обрабатывает миллионы сообщений в день, следовательно, он использует 90% + CPU все время.

Таким образом, мы планируем масштабировать или отделить план обслуживания приложений для этой отдельной функции.Я вижу следующие возможные решения

  1. Изменить выделенный сервисный центр приложений на потребление.(не уверен насчет влияния на цену или SLA).

  2. Создайте новый проект, переместите одну функцию в этот проект и разверните эту функцию в отдельном плане обслуживания приложения.(требуется изменение кода и конвейера CI / CD.)

  3. Разверните те же библиотеки функций в 2 AppService Plan и удалите функции в соответствии с масштабом.(не уверен, что это возможно с DevOps Azure или нет).

хотел бы узнать лучший подход, если клиент не согласен с планом потребления.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Преимущество выделенного плана перед планом потребления - предсказуемость.Выполнение рабочей нагрузки в плане потребления обычно работает быстрее и дешевле, чем выполнение той же рабочей нагрузки в выделенном плане, но использование выделенного плана предотвращает непредвиденные скачки в использовании, приводящие к неожиданным скачкам затрат, а также предотвращает проблемы холодного запуска.

Если вы переключитесь на модель потребления (вариант 1), вы платите за выполнение отдельной функции, поэтому независимо от того, запускаете ли вы одно или два приложения-функции, с этой точки зрения нет никакой разницы.Вы должны решить, как разделить ваши функции на основе их независимости.Если вы будете развертывать их как единое целое, то придерживайтесь одного функционального приложения, но если вы захотите обновить слушателя отдельно, поместите его в отдельный проект.

Если вы разбили два работающих приложенияна отдельных выделенных тарифных планах создание нового проекта (вариант 2), безусловно, является самым чистым способом.Однако развертывание одного и того же проекта в обоих приложениях (вариант 3) технически возможно - вам просто нужно отключить функции, которые не должны запускаться в каждом приложении, с помощью настроек приложения.Создайте настройки с именем AzureWebJobs.MyFunction.Disabled со значением true (см. https://docs.microsoft.com/en-gb/azure/azure-functions/disable-function#functions-2x---all-languages).

0 голосов
/ 20 декабря 2018
  1. вам не поможет, он масштабирует все функции в приложении функций
  2. , которые будут работать
  3. , то же самое, что и версия, только с двумя планами обслуживания приложения, а не с одним.

Лучший подход - изолировать эту функцию в одном приложении-функции Azure, а затем масштабировать ее независимо.

...