Много триггеров в одном веб-задании
Влияет ли наличие множества триггеров (blob, servicebus,timer) в одном веб-задании на производительность веб-задания?
Есть ли способ улучшить производительность webjob с помощью множества триггеров?
Можно ли разделить тяжелую веб-работу на меньшую?
2 ответа
1. Снижает ли количество триггеров (blob, servicebus,timer) в одном веб-задании производительность веб-задания? При условии, что ваш webjob не синглтон. Вы можете иметь несколько функций в своем веб-задании с несколькими триггерами, и производительность не снизится. (при условии, что ваш план веб-приложения достаточно жесткий, чтобы справиться со всей нагрузкой.)
2. Есть ли способ улучшить производительность веб-джоба с помощью множества триггеров? - лучший способ состоит в том, чтобы разделить веб-задание на более мелкие, и каждый веб-задание имеет один триггер. И масштабируйте свои веб-задания (добавляйте больше экземпляров) в зависимости от нагрузки. Кроме того, если ваша веб-работа выполняется в течение 5 минут, вы также можете использовать приложение-функцию Azure. Что дает гораздо лучший вариант. В качестве альтернативы, предполагая, что выполнение веб-работы занимает более 5 минут, вы можете использовать exe-файл веб-работы в качестве образа докера и предоставлять его с помощью приложения логики по запросу с помощью ACI. В этом сценарии вы будете настраивать триггеры в приложении логики.
1. Можно ли разделить тяжелую веб-работу на меньшую? - да, смотрите мои предыдущие ответы.
Рассматривайте веб-задания Azure как функцию службы приложений Azure для запуска фонового задания, как указано в официальном документе ниже.
WebJobs - это функция службы приложений Azure, которая позволяет запускать программу или сценарий в том же контексте, что и веб-приложение, приложение API или мобильное приложение. За использование WebJobs не взимается дополнительная плата.
Хотя это сказал no additional cost
WebJob, как простая и полезная функция, была основана до того, как Azure опубликовал другие подобные и более мощные сервисы, такие как функции, которые будут представлены в том же документе, что и ниже.
Функции Azure предоставляют еще один способ запуска программ и сценариев. Сравнение веб-заданий и функций см. В разделе " Выбор между потоками" , "Приложения логики", "Функции" и "веб-задания".
В приведенном выше справочном документе Summary
раздел рекомендую его лучший сценарий применения.
Резюме
Функции Azure обеспечивают более высокую производительность труда разработчиков, больше опций языка программирования, больше опций среды разработки, больше опций интеграции сервисов Azure и больше опций ценообразования. Для большинства сценариев это лучший выбор.
Вот два сценария, для которых WebJobs могут быть лучшим выбором:
- Вам нужно больше контроля над кодом, который прослушивает события, объект JobHost. Функции предлагают ограниченное количество способов настройки поведения JobHost в файле host.json. Иногда вам нужно сделать то, что не может быть указано строкой в файле JSON. Например, только SDK WebJobs позволяет настраивать настраиваемую политику повторов для хранилища Azure.
- У вас есть приложение-служба приложений, для которого вы хотите запускать фрагменты кода, и вы хотите управлять ими вместе в одной среде DevOps.
Для других сценариев, в которых вы хотите запускать фрагменты кода для интеграции Azure или сторонних сервисов, выберите "Функции Azure" вместо "WebJobs" с WebJobs SDK.
Между тем, согласно моему опыту работы с Azure, WebJobs и Functions подходят только для некоторых простых и легких задач. Для обеспечения высокой производительности пакетная служба Azure является хорошим выбором, чтобы найти баланс между стоимостью и простотой использования.