Экземпляр и масштабирование функции Azure

Создавая службу приложения-функции Azure в соответствии с планом потребления с одной функцией триггера HTTP, могу ли я контролировать количество экземпляров службы приложения-функции Azure, обслуживающих входящий запрос? Если да, как управлять экземпляром службы приложений?

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


person 191180rk    schedule 09.08.2020    source источник


Ответы (1)


Вы не можете определить, как масштабируемый контроллер Azure будет масштабировать дополнительные экземпляры вашей функции, запускаемой HTTP, в планах «Потребление» или «Премиум». Контроллер масштабирования наилучшим образом угадывает, когда следует подготовить дополнительные экземпляры вашей функции.

Также обратите внимание, что если вы перешли с холодного запуска на «Все на Reddit» запрашивают мою функцию ПРЯМО СЕЙЧАС, контроллер масштабирования Azure будет регулировать добавление нового экземпляра вашей HTTP-функции, запускаемой не более одного раза в секунду. Я столкнулся с этим на собственном горьком опыте, поскольку очередь HTTP углубляется из-за внезапных потоков трафика.

Кроме того, когда ваша функция масштабируется, вы не можете контролировать в планах «Потребление» и «Премиум», к какой виртуальной машине в вашем регионе будут добавлены новые экземпляры. Одноэлементные переменные в вашей функции Azure будут использоваться только экземплярами функций в одной виртуальной машине. Планируйте соответственно. Единственный способ обойти это поведение - разместить функцию Azure в плане службы приложений. В этом сценарии вы ЗНАЕТЕ, что ваша функция Azure будет выполняться на тех же N экземплярах виртуальных машин, где N - количество масштабируемых экземпляров веб-приложений.

person Rob Reagan    schedule 09.08.2020
comment
@ RobReagan, независимо от плана службы приложений (или) плана потребления, может ли виртуальная машина размещать только один экземпляр службы приложения-функции Azure? если да, то почему? потому что я предполагаю, что службы приложений-функций Azure развернуты как контейнер на виртуальной машине и могут развернуть несколько контейнеров с одним и тем же образом на одной виртуальной машине. В случае, если виртуальная машина может размещать несколько экземпляров одной и той же службы приложения-функции Azure, будут ли переменные Singleton в службе AZURE FUNCTION APP SERVICE (а не между функциями в службе приложения-функции) совместно использоваться ее экземплярами, размещенными на одной виртуальной машине? - person 191180rk; 10.08.2020
comment
План службы приложений может содержать несколько экземпляров функции Azure. Он также может работать с несколькими функциями Azure. Фактически вы можете развернуть веб-приложение и N различных функций Azure в одном плане службы приложений. Экземпляр одноэлементной переменной может совместно использоваться несколькими экземплярами функции Azure на одной виртуальной машине. - person Rob Reagan; 10.08.2020
comment
@ RobReagan, удивлен, услышать Экземпляр одноэлементной переменной может совместно использоваться несколькими экземплярами функции Azure на одной и той же виртуальной машине, и мне интересно, как технически это может быть достигнуто, поскольку я в предположениях, что объекты экземпляра приложения доступны в пределах домен их приложения не находится за его пределами по соображениям безопасности и по другим причинам. Можете ли вы отослать меня к какой-либо документации Microsoft, чтобы передать ее моим руководителям, когда они будут спрашивать меня. Спасибо. - person 191180rk; 10.08.2020
comment
Я никогда не видел этого в документации. Но вот ответ на аналогичный вопрос Криса Гиллума, главного менеджера по разработке программного обеспечения в Microsoft. stackoverflow.com/ вопросы / 39387423 /. Я сам видел такое поведение, когда мне нужно было масштабировать и повторно использовать соединения HttpClient или Sql. - person Rob Reagan; 10.08.2020