2011-02-09 671 views
5

¿Qué es el patrón de diseño de "trabajador"?Patrón de diseño de trabajador

+1

Qué quiere decir el patrón maestro/trabajador? –

+0

Cuando pienso en "trabajador" no puedo evitar pensar en "trabajos": los trabajadores hacen trabajos.Los trabajadores manejan la puesta en cola/despacho de trabajos, y los trabajos son unidades de trabajo discretas, potencialmente con algún estado como "repetible", etc. –

Respuesta

7

Puede ser que busque un worker thread pattern, donde utiliza una cola para programar las tareas que desea que sean procesadas "fuera de línea" por un hilo de trabajo. Algunas soluciones utilizarán un pool of worker threads en lugar de un solo subproceso para lograr mejoras de rendimiento mediante la paralelización.

+6

El primer enlace está muerto:/ – Dan

+0

Jap, throws 404 :( –

2

Me viene a la mente algo como MapReduce. Donde se pueden realizar múltiples tareas en paralelo en los nodos de trabajadores.

Editar: Como @larsmans mencionó, esto se conoce como el patrón Master/Worker.

+0

Enlace muerto, pruebe https://docs.gigaspaces.com/sbp/master-worker-pattern. html – wmitchell

8

El patrón de diseño trabajador

Problema:

  • Usted tiene un pequeño objeto que es de datos y gran conjunto de operaciones que podría llevarse a cabo a ese objeto
  • ¿Quieres para mantener la lista de métodos del objeto pequeña
  • Las operaciones se pueden realizar de diferentes maneras, incluidas las diferencias ent implementaciones
  • Su pequeño objeto sólo sabe leer y salvarse de la capa de abstracción de datos
  • desea procesar por lotes varios objetos pequeños

Solución:

  • Tiene una interfaz de trabajador que define la API de acceso para el trabajador y cómo agregar temas
  • Puede tener varios trabajadores por sujeto
  • Su trabajador realiza la transformación, el sujeto se transforma
  • Su tema se mantiene el peso ligero

Ejemplo:

Su objeto ImageBinary representa el binario de la imagen, incluida la altura y el ancho (los metadatos están desacoplados). Puede realizar varias operaciones en este objeto, como redimensionar, recortar o escalar.

$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); 

patrones relacionados

  • Administrador
  • adaptador