Está en la página 1de 21

PATRN MASTER SLAVE

Jos Valentn Morales Robles Eduardo de la Garza Cerrato No Martnez Olivas

TEMAS
Introduccin Master-Slave Implementacin Caractersticas Ejemplo Contexto Problema Solucin Estructura Dinmica

Implementacin Variantes Usos conocidos Consecuencias

MASTER SLAVE
El patrn Master-Slave soporta tolerancia a fallos, computacin paralela y precisin computacional. Un componente maestro distribuye el trabajo a componentes esclavos iguales y calcula el resultado final a partir de los resultados de los esclavos.

El patrn aplica el principio de divide y vencers. El trabajo se divide en subtareas que son procesadas de forma independiente. El resultado del ejercicio total se calcula usando los resultados que cada operacin de procesamiento proporciona. Este patrn es muy usado en reas de computacin paralela

MASTER SLAVE
Tambin se aplica el patrn en la implementacin del principio denominado redundancia modular triple:

En esta aproximacin, la ejecucin de un servicio es delegada a tres componentes independientes, para que el resultado sea vlido al menos dos de tales componentes deben dar el mismo resultado.

IMPLEMENTACIN
La implementacin puede ser relativamente compleja. Los esclavos se implementan como hilos procesos separados. Maestro-esclavo pueden correr sobre una sola mquina tambin pueden ser distribuidos en varias mquinas (Ej. Cluster)

CARACTERSTICAS
Maestro-esclavo no siempre es factible porque algunas tareas no pueden ser particionadas. Difcil de implementar.
Dificultad en la portabilidad, si se tiene una fuerte dependencia sobre el hardware al que fu configurado.

EJEMPLO
El

problema del agente viajero es bien conocido en la teora de grafos. El objetivo es encontrar una ruta que, comenzando y terminando en una ciudad concreta, pase una sola vez por cada una de las ciudades minimice la distancia recorrida por el viajante

EJEMPLO
La mayora de las implementaciones del problema del agente viajero son aproximaciones a la solucin ptima comparando un nmero fijo de rutas. Una de las aproximaciones ms simples es seleccionar rutas aleatorias para comparar, y esperar que la mejor ruta encontrada se aproxime a la solucin ptima. Se debe asegurar que las rutas a investigar son seleccionadas de forma aleatoria, y que el nmero de rutas seleccionadas es suficientemente grande.

PROBLEMA

Divide y vencers es un principio comn para solucionar muchos tipos de problemas. El trabajo es dividido en varias subtareas iguales que son procesadas independientemente. El resultado del clculo total es calculado a partir de los resultados proporcionados por cada proceso parcial.

PROBLEMA
7 7 3 3 3 4 4 2 2 2 1 1 9 9 8 10 8 10

PROBLEMA
Surgen varias fuerzas cuando se implementa cada estructura: Los clientes no deben ser conscientes de que cada clculo se basa en el principio de divide y vencers. Ni los clientes ni las subtareas de procesamiento deben depender en los algoritmos para dividir el trabajo y ensamblar el resultado final.

PROBLEMA
Puede ser til usar diferentes implementaciones, semnticamente idnticas, para procesar subtareas. Por ejemplo para incrementar la precisin computacional. Algunas veces el procesar las subtareas necesita coordinacin, este es el caso de aplicaciones de simulacin.

SOLUCIN
Introduzca una instancia de coordinacin entre los clientes del servicio y el procesamiento de las subtareas individuales. Un componente maestro divide el trabajo en subtareas iguales, delega estas subtareas a varios componentes esclavos independientes, y regresa un resultado final a partir de los resultados parciales que retornan los esclavos. El principio general se aplica en tres reas:

Tolerancia a fallas. La ejecucin de un servicio es delegada a varias implementaciones replicadas. Las fallas de ejecuciones del servicio pueden ser detectadas y manejadas.

SOLUCIN

Computacin paralela. Una tarea compleja es dividida en un nmero fijo de subtareas idnticas que son ejecutadas en paralelo. El resultado final es construido con la ayuda de los resultados obtenidos del procesamiento de estas subtareas.
Precisin computacional. La ejecucin de un servicio es delegada a varias implementaciones diferentes. Los resultados imprecisos pueden ser detectados y manejados.

ESTRUCTURA

En una estructura Master-Slave hay al menos dos instancias de los componentes esclavos conectados al maestro.

DINMICA

Diagrama de secuencia del patrn Master Slave

IMPLEMENTACIN
La implementacin del patrn Master-Slave sigue cinco pasos. 1. Divida el trabajo. Especifique como la computacin de la tarea se puede dividir e un conjunto igual de subtareas. Identifique los subservicios que son necesarios para procesar una subtarea. 2. Combine los resultados de las subtareas. Especifique como el resultado final del servicio puede ser computado con la ayuda de los resultados obtenidos del procesamiento de las subtareas individuales. 3. Especifique la cooperacin entre maestro y esclavos. Defina una interfaz para el subservicio identificado en el paso 1. 4. Implemente los componentes esclavos de acuerdo con las especificaciones desarrolladas en el paso previo. 5. Implemente el maestro de acuerdo con las especificaciones de los pasos 1 a 3.

VARIANTES
Maestro-Esclavo con tolerancia a fallas . El maestro delega la ejecucin de un servicio a un nmero fijo de implementaciones replicadas, cada una representada por un esclavo. Tan pronto como el primer esclavo termina, el resultado es regresado al cliente del maestro. La tolerancia a fallas se basa en que por lo menos si un esclavo no falla, el cliente puede recibir un resultado vlido. El maestro puede manejar la situacin en la que fallen todos los esclavos, lanzando una excepcin que el cliente deba manejar. El maestro puede usar time-outs para detectar la falla de un esclavo; sin embargo, esta variante no ayuda cuando el que falla es el maestro.

VARIANTES
Maestro-Esclavo para computacin paralela . Este es el uso ms comn del patrn. El maestro divide una tarea compleja en varias subtareas idnticas, cada una de las cuales es ejecutada en paralelo por un esclavo. El maestro construye el resultado final a partir de los resultados obtenidos por los esclavos. El maestro contiene las estrategias para dividir la tarea global y para computar el resultado final. El algoritmo para subdividir la tarea y coordinar los esclavos es dependiente de la arquitectura de hardware de la mquina en la que el programa corre. Antes de que el maestro pueda calcular el resultado final debe esperar a que termine la ejecucin de cada una de las subtareas.

VARIANTES
Maestro-Esclavo con coordinacin de esclavos . Los cmputos de un esclavo puede dependen del estado de computacin de otros esclavos. En esta situacin, los clculos de todos los esclavos deben ser suspendidos regularmente para que cada esclavo se coordine con los esclavos de que depende, despus de lo cual los esclavos continan sus cmputos individuales.

USOS CONOCIDOS
Multiplicacin de matrices

Transformacin-codificacin de una imagen. Por ejemplo el clculo de la transformacin coseno de un bloque de 8x8 pixeles de una imagen.