2011-02-09 14 views
5

Che cos'è il modello di progettazione "lavoratore"?Modello di progettazione lavoratore

+1

Vuoi dire il padrone/modello lavoratore? –

+0

Quando penso a "lavoratore" non posso fare a meno di pensare a "lavori" - i lavoratori fanno lavori.I lavoratori gestiscono l'accodamento/dispacciamento dei lavori ei lavori sono unità di lavoro discrete, potenzialmente con alcuni stati come "ripetibili", ecc. –

risposta

7

Potrebbe essere che si sia dopo un worker thread pattern, in cui si utilizza una coda per pianificare le attività che si desidera vengano elaborate "offline" da un thread di lavoro. Alcune soluzioni useranno un pool of worker threads anziché un singolo thread per ottenere miglioramenti delle prestazioni utilizzando la paralelizzazione.

+6

Il primo link è morto:/ – Dan

+0

Jap, getta 404 :( –

2

Mi viene in mente qualcosa come MapReduce. Dove è possibile eseguire più attività in parallelo sui nodi worker.

Modifica: come @larsmans menzionato, questo è noto come il modello Master/Worker.

+0

Dead link prova https://docs.gigaspaces.com/sbp/master-worker-pattern. html – wmitchell

8

Il modello di progettazione lavoratore

Problema:

  • Si dispone di un piccolo oggetto che è di dati e grande insieme di operazioni che potrebbe essere eseguita per quell'oggetto
  • You want per mantenere la lista dei metodi dell'oggetto piccola
  • Le operazioni possono essere eseguite in diversi modi, tra cui diverse ent implementazioni
  • vostro piccolo oggetto solo sa come leggere e si salva dal livello di astrazione dati
  • si desidera elaborare in batch una serie di piccoli oggetti

Soluzione:

  • Si dispone di un'interfaccia operatore che definisce l'API di accesso per l'operatore e come aggiungere i soggetti
  • È possibile avere più lavoratori per materia
  • tuo lavoratore non la trasformazione, il soggetto si trasforma
  • Il soggetto viene mantenuto il peso leggero

Esempio:

vostro ImageBinary rappresenta l'immagine binaria con altezza e larghezza (i metadati sono disaccoppiati). Esegui varie operazioni su questo oggetto come ridimensionamento, ritaglio, ridimensionamento.

$image1 = new ImageBinary(array(‘id’ => 1)); 
$image2 = new ImageBinary(array(‘id’ => 2)); 
$image3 = new ImageBinary(array(‘id’ => 3)); 

$worker = new ImageWorker;$worker->add($image1);$worker->add($image2);$worker->add($image3);$worker->rotate(90); 

modelli correlati

  • Gestore
  • adattatore
Problemi correlati