Прежде чем я попытаюсь дать ответ на ваши вопросы, я сначала хотел бы кое-что объяснить. Функции Azure могут выполняться двумя различными способами: в плане потребления и в плане обслуживания приложения. Чтобы вы могли в полной мере использовать функции (или фактически без сервера), вы должны запустить свои функции в плане потребления.
- План потребления - Когда ваша функция выполняется, Azure предоставляет все необходимые вычислительные ресурсы. Вам не нужно беспокоиться об управлении ресурсами, и вы платите только за время выполнения кода.
- План обслуживания приложения - Запустите свои функции, как в Интернете, на мобильных устройствах и в приложениях API. Если вы уже используете Службу приложений для других своих приложений, вы можете запускать свои функции на том же плане без дополнительных затрат.
и
Когда вы используете план потребления, экземпляры хоста функций Azure динамически добавляются и удаляются в зависимости от количества входящих событий. Этот план автоматически масштабируется, и вы платите за вычислительные ресурсы только тогда, когда ваши функции работают. В плане потребления время выполнения функции истекает через заданный промежуток времени.
О масштабировании:
Функции Azure используют компонент, называемый контроллером масштабирования, для мониторинга скорости событий и определения того, следует ли масштабировать или масштабировать. Контроллер масштабирования использует эвристику для каждого типа триггера. Например, когда вы используете триггер хранилища очереди Azure, он масштабируется в зависимости от длины очереди и возраста самого старого сообщения очереди.
Более интересная информация о масштабировании: Масштаб функций Azure и хостинг
Учитывая ваши требования, моя идея заключается в том, чтобы использовать реальную силу функций, запустив их в Плане потребления. Если у вас высокоприоритетный клиент, предоставьте ему собственный экземпляр функции, который запускается собственным контейнером в хранилище BLOB-объектов (посмотрите на ссылку в комментарии @ Gonzo345). Это гарантирует, что он будет обработан, как только он поступит, и он будет нести расходы только в том случае, если для высокоприоритетного клиента появится триггер. Из-за идеи плана потребления он создаст экземпляр функции, запустит все необходимое для запуска и уничтожит экземпляр.
Между прочим: Триггеры Blob в конце являются триггерами опроса. Когда есть много движения, они довольно быстрые. Но когда ничего особенного не происходит, для изменения функции учетной записи хранения может потребоваться до нескольких минут. Если вы хотите обрабатывать события в реальном времени, взгляните на Сетка событий .
Теперь вернемся к вашим вопросам:
- Да, так и должно быть. Для требуется, чтобы ваше функциональное приложение работало в плане обслуживания приложений
- Посмотрите здесь: Отключите автоматическое масштабирование и вручную масштабируйте ваши экземпляры
- См. 2:)