2014-09-13 3 views
5

У меня есть код, который должен запускаться в результате вызова служебной шины. Этот конкретный код имеет интенсивность процессора, и возможно, что 100 из них должны будут запускаться одновременно. Использует ли Azure Web Jobs вычислительные ресурсы с одного компьютера или использует ли какие-либо доступные вычислительные ресурсы у нескольких машин?Архитектура Azure Web Jobs

ответ

1

Web Jobs использует ресурсы вашего веб-приложения, почему бы вам не попробовать Azure Functions, который можно масштабировать, а их цена почти равна нулю. Они находятся в техническом предпросмотре, я пробовал использовать его, функции Azure очень дешевы. Если вызов служебной шины может быть неработоспособным, то есть не нужно, чтобы результаты вашего приложения из экземпляра не удовлетворяли вам, вы можете попробовать azure функции. Функции Azure в основном используются для обслуживания и работы в ночное время. Я использовал его для минимизации моих изображений в миниатюре. Он отлично работал

+0

Да, если бы только Azure Functions существовали, когда я писал это сообщение, я бы использовал его. :) – dascalos

+0

Если вы посмотрите на комментарий, который я написал на посту Steeples, он в основном описывал функции Azure. Я думаю, что кто-то в Azure или AWS прочитал это и создал Azure Functions и AWS Lambda. Я беру на себя полную ответственность. – dascalos

+0

Возможно, вы правы, dascalos. Ты настоящий провидец! :) –

1

Azure Webjobs предназначен для работы на таком количестве серверов, как вы расширили веб-сайт для запуска. По умолчанию он будет запускать до 16 задач из очереди одновременно, но это настраивается, как показано на рисунке here.

public class Program 
{ 
    static void Main() 
    { 
     JobHostConfiguration config = new JobHostConfiguration(); 
     config.Queues.BatchSize= 1; 
     JobHost host = new JobHost(config); 
     host.RunAndBlock(); 
    } 
} 
+0

Конфигурация BatchSize не применяется для очередей ServiceBus. Мы отслеживаем это, и мы, вероятно, будем поддерживать параллельное выполнение для ServiceBus, но на данный момент запущенные функции ServiceBus выполняются последовательно. –

+1

Не поймите меня неправильно, я люблю WebJobs. Они отлично подходят для определенных случаев использования. Я фактически использую их для ночного импорта данных. То, что я хотел бы, это еще одна услуга, которая использует подобный sdk для webjobs, но по мере того, как в нее входит работа, она запускает процессы в пуле доступных вычислительных ресурсов и выполняет эту работу. Я не хочу волноваться, если у меня будет достаточно процессора. Подобно рабочим ролям, но более легким и эластичным. Могу я получить Аминь? Я что-то теряю? – dascalos

+0

@ dascalos Я думаю, что это отличная идея. Надеюсь, вы не против, но я добавил его в качестве запроса обратной связи на Azure Uservoice: http://feedback.azure.com/forums/34192--general-feedback/suggestions/6440654-allow-webjobs-to -scale-dynamically-and-independent –

0

Веб-работа, развернутая как часть Azure WebSite, будет совместно использовать ресурсы с помощью веб-приложения. У вас есть возможность масштабировать веб-сайт до 10 (я думаю?) Экземпляров, если вам нужен параллелизм.

Как я упоминал в комментарии к сообщению Мэтью, если вы используете SDK Azure WebJobs для выполнения функций, вызванных сообщениями очереди ServiceBus, мы не распараллеливаем как часть одного и того же хоста. Это означает, что сообщения будут обрабатываться последовательно, пока у вас есть один хост.