2014-09-13 17 views
5

Ho un codice che deve essere eseguito come risultato di una chiamata a un bus di servizio. Questo particolare codice richiede un uso intensivo della CPU ed è possibile che 100 di questi debbano essere eseguiti contemporaneamente. Azure Web Jobs utilizza risorse di calcolo da una macchina o utilizza risorse di elaborazione disponibili da diverse macchine?Architettura dei lavori Web di Azure

risposta

1

Web Jobs utilizza le risorse della tua app Web, perché non provi il Azure Functions che può essere ridimensionato e il loro prezzo è quasi pari a zero. Sono in anteprima tecnica, ho provato ad usarlo, le funzioni di Azure sono molto economiche. Se la chiamata al bus di servizio può essere fuori servizio, il che significa che non è necessario un risultato di istanza dall'applicazione, è possibile provare le funzioni di azzurro. Le funzioni di Azure sono principalmente utilizzate per lavori di manutenzione e notturni. L'ho usato per ridimensionare le mie immagini in miniatura. Ha funzionato perfettamente.

+0

Sì, se esistesse solo le funzioni di Azure quando ho scritto quel post, l'avrei usato. :) – dascalos

+0

Se si guarda il commento che ho scritto sul post di Steeples, in pratica si trattava di descrivere le funzioni di Azure. Penso che qualcuno in Azure o AWS lo abbia letto e abbia creato Azure Functions e AWS Lambda. Mi prendo pieno credito. – dascalos

+0

Forse hai ragione, Dascalos. Sei un vero visionario !! :) –

1

Azure Webjobs è progettato per essere eseguito su tutti i server su cui è stato ridimensionato il sito Web per l'esecuzione. Per impostazione predefinita, eseguirà contemporaneamente fino a 16 attività da una coda, ma è configurabile come mostrato in here.

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

La configurazione BatchSize non è valida per le code di ServiceBus. Stiamo monitorando questo e probabilmente stiamo andando a supportare l'esecuzione parallela per ServiceBus ma per ora le funzioni attivate da ServiceBus vengono eseguite in sequenza. –

+1

Non fraintendetemi, amo i WebJobs. Funzionano perfettamente per determinati casi d'uso. Li uso effettivamente per le importazioni notturne di dati. Quello che mi piacerebbe è un altro servizio che usa un sdk simile ai webjobs ma, man mano che il lavoro arriva, genera processi nel pool di risorse di calcolo disponibili e fa il lavoro. Non voglio preoccuparmi se ho abbastanza CPU generate. Simile ai ruoli dei lavoratori ma più leggero e più elastico. Posso avere un Amen? Mi manca qualcosa che esiste? – dascalos

+0

@dascalos Penso che sia una grande idea. Spero non ti dispiaccia, ma l'ho aggiunto come richiesta di feedback su Azure Uservoice: http://feedback.azure.com/forums/34192--general-feedback/suggestions/6440654-allow-webjobs-to -scale-dynamically-and-independent –

0

Un lavoro Web distribuito come parte di un sito Azure condividerà le risorse con l'applicazione web. Hai la possibilità di ridimensionare il sito web fino a 10 istanze (credo?) Se hai bisogno del parallelismo.

Come ho menzionato nel commento al post di Matthew, se si utilizza l'SDK WebSwash di Azure per disporre di funzioni attivate dai messaggi in coda di ServiceBus, non eseguiamo il parallelismo come parte dello stesso host. Ciò significa che i messaggi verranno elaborati in modo sequenziale finché si dispone di un singolo host.

Problemi correlati