Каков механизм, который предотвращает масштабированный триггер функции Azure одним и тем же BLOB-объектом несколько раз? - PullRequest
0 голосов
/ 22 октября 2018

Сценарий :

Функция Azure, размещенная в плане обслуживания приложения и масштабированная до 5 экземпляров.Функция Azure запускается Blob.

Вопрос :

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

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Согласитесь с @ Peter, вот мое понимание ссылок, поправьте меня, если это не имеет смысла.

Информация, связанная с механизмом запуска BLOB-объектов, хранится в учетной записи хранения Azure для нашего приложения Function (определяетсянастройка приложения AzureWebJobsStorage).Блокировки находятся в контейнере BLOB-объектов с именем azure-webjobs-hosts, и есть очередь azure-webjobs-blobtrigger-<FunctionAppName> для внутреннего использования.

См. Другую часть в том же комментарии .

Обычно только 1 из N экземпляров хоста сканирует новые большие двоичные объекты (на основе одноэлементной блокировки идентификатора хоста).Когда он находит новый BLOB-объект, он добавляет к нему сообщение очереди, и один из N хостов обрабатывает его.

Итак, на первом этапе - поиск новых BLOB-объектов, функция масштабирования не участвует.,Блокировка идентификатора одноэлементного хоста реализована с помощью аренды BLOB-объектов, как упоминалось в @Peter (проверьте BLOB-объект locks/<FunctoinAppName>/host в azure-webjobs-hosts).

Как только внутренняя очередь начинает получать сообщения новых больших двоичных объектов, функция масштабирования начинает работать, когда экземпляры хоста извлекают и обрабатывают сообщения вместе.Когда обрабатывается BLOB-сообщение, оно не может быть просмотрено другими экземплярами и будет удалено позже.

Кроме того, чтобы гарантировать, что обработанный BLOB-объект никогда не запускает функцию позже (например, при следующем цикле сканирования), еще один механизм BLOB-квитанции .

0 голосов
/ 22 октября 2018

Насколько я могу сказать, используются блоб-аренды .

Он поддерживается этим комментарием , сделанным инженером MS, работающим в команде функций Azure.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...