Applicazione di algoritmi di elaborazione parallela

Completato

Esistono approcci diversi all'elaborazione batch con algoritmi di elaborazione parallela. Gli sviluppatori in genere usano tre diversi tipi di elaborazione parallela nei propri progetti:

  • Modellazione delle singole attività: crea un'attività batch separata per ogni elemento di lavoro. Questo approccio funziona bene con un numero ridotto di elementi di lavoro ed è il migliore per creare dipendenze tra elementi di lavoro rispetto agli altri processi paralleli. È anche più semplice da sviluppare rispetto agli altri processi paralleli. La modellazione delle singole attività non è l'approccio ideale in presenza di molte attività in quanto il sovraccarico aggiuntivo influirà sulle prestazioni e causerà ritardi tra le attività batch in esecuzione.

  • Aggregazione dei batch: usa un numero limitato di attività batch che hanno un valore di dimensione di aggregazione (il numero di elementi di lavoro in ciascuna attività batch). Questo approccio funziona bene per un carico di lavoro semplice e uniforme in cui i tempi di elaborazione sono simili. In questo caso, la tabella batch non è eccessivamente popolata da attività batch. Le prestazioni possono essere incrementate se la dimensione di aggregazione è appropriata. Una dimensione di aggregazione troppo grande o troppo piccola può generare problemi di prestazioni. I carichi di lavoro non uniformi possono ridurre le prestazioni con questo approccio, in quanto le attività batch termineranno l'elaborazione in momenti diversi.

  • Prelievo principale: crea un numero limitato di attività batch in cui ogni attività batch preleva ed elabora il primo elemento di lavoro libero. Questo processo richiede l'uso di una tabella di gestione temporanea per memorizzare gli elementi di lavoro per le attività batch. Questo approccio funziona bene se il carico di lavoro non è uniforme con tempi di elaborazione variabili. Inoltre, la tabella batch non viene sovrappopolata con attività batch che usano questo approccio. In presenza di molti elementi di lavoro di piccole dimensioni da elaborare, la memorizzazione degli elementi di lavoro nella tabella di gestione temporanea può influire sulle prestazioni.

Di seguito sono riportate alcune considerazioni chiave per la scelta di un approccio:

  • Caratteristiche del carico di lavoro
    • Selezionare la modellazione di singole attività per carichi di lavoro piccoli e interdipendenti.
    • Scegliere l'aggregazione dei batch per attività uniformi con tempi di elaborazione prevedibili.
    • Usare il prelievo principale per carichi di lavoro irregolari che richiedono flessibilità.
  • Ottimizzazione delle prestazioni
    • Ridurre al minimo i costi generali evitando la creazione non necessaria di attività in batch.
    • Sperimentare diverse dimensioni di aggregazioni in batch per trovare un equilibrio ottimale.
  • Complessità dell'implementazione
    • Iniziare con la modellazione di singole attività per requisiti semplici.
    • Passare all'aggregazione in batch o al prelievo principale man mano che aumenta la complessità del carico di lavoro.

Scenario di esempio

Si consideri il problema di una società che elabora quotidianamente gli ordini cliente. La convalida degli ordini di dimensioni ridotte (al di sotto di $ 1.000) richiede pochi secondi, mentre gli ordini di dimensioni maggiori (superiori a $ 10.000) richiedono l'approvazione manuale, che può richiedere diversi minuti.

Per risolvere questo problema è possibile ricorrere al prelievo principale. Usare una tabella di staging per allocare in modo dinamico le attività ai processi batch in base alle dimensioni e alla priorità dell'ordine.