Sei sulla pagina 1di 16

Introducción

Muchos algoritmos distribuidos requieren que un proceso actúe como coordinador, iniciador, o que
represente algún papel en especial. En general, no importa qué proceso tenga esta responsabilidad
especial, pero alguno tiene que realizarla. En esta sección veremos algoritmos para elegir un
coordinador (y utilizaremos éste como un nombre general para el proceso especial). Si todos los
procesos son exactamente iguales, sin características que los distingan, no hay manera de seleccionar
a uno para que sea el especial. En consecuencia, supondremos que cada proceso tiene un número
único, por ejemplo, su dirección de red (por simplicidad, supondremos un proceso por máquina). En
general, la elección de algoritmos intenta localizar el proceso que tenga el número más grande y
designarlo como coordinador. Los algoritmos difieren en la forma en que efectúan la localización.

Muchas aplicaciones y servicios distribuidos se basan en la existencia de un proceso diferenciado que


coordina el trabajo de un conjunto de procesos. En todas estas situaciones se requiere detectar que el
proceso coordinador falla y elegir un nuevo proceso que asuma el papel de coordinador. La elección
requiere el acuerdo sobre quién va a ser el nuevo y único coordinador. De nuevo, las decisiones se
basan en la existencia de plazos para la recepción de los mensajes de respuesta.

Por otra parte, para determinar el criterio de elección de un proceso como coordinador se requiere
definir un orden total entre el conjunto de procesos. Supondremos que los procesos tienen asociados
identificadores únicos según los cuales pueden ordenarse.

Algoritmo de elección tradicional


Comencemos analizando dos algoritmos tradicionales de elección para tener una idea de lo
que han estado haciendo grupos completos de investigadores en las décadas pasadas. En
secciones posteriores veremos las nuevas aplicaciones para el problema de elección.

▪ Algoritmo de Bully
El algoritmo abusón es un método, dentro de la computación distribuida, para la
elección dinámica de un coordinador según el ID de los procesos. El proceso con el ID
mayor será seleccionado como el coordinador del sistema distribuido.
Tipos de mensaje:
✓ Mensaje de Elección: Enviados para comunicar que se va a seleccionar un nuevo
coordinador.
✓ Mensaje de Respuesta: Encargados de responder al mensaje de elección.
✓ Mensaje de Coordinador: Enviado para comunicar el ID del proceso seleccionado.

Como primer ejemplo, consideremos el algoritmo del abusón, concebido por García-
Molina (1982). Cuando cualquier proceso advierte que el coordinador ya no está
respondiendo peticiones, inicia una elección. Un proceso, P, celebra una elección de la
siguiente manera:
1. P envía un mensaje de ELECCIÓN a todos los procesos con números superiores.
2. Si ningún proceso responde, P gana la elección y se convierte en el coordinador.
3. Si uno de los procesos superiores responde, toma el mando. El trabajo de P está
hecho.
En cualquier momento, un proceso puede recibir un mensaje de ELECCIÓN de alguno
de sus colegas con número menor. Cuando llega un mensaje de este tipo, el destinatario
envía un mensaje de OK de vuelta al remitente para indicarle que está activo y que
tomará el control. El destinatario celebra entonces una elección, a menos que ya tenga
una. En algún momento, todos los procesos se rinden menos uno, que es entonces el
nuevo coordinador. Éste anuncia su victoria enviando un mensaje a todos los procesos
en el que les indica que a partir de ese momento es el nuevo coordinador.
Si un proceso que previamente había fallado se recupera, celebra una elección. Si
sucede que el proceso con el número más grande está en ejecución, él ganará la
elección y asumirá el trabajo del coordinador. Así, el muchacho más grande del pueblo
siempre gana, de ahí el nombre de “algoritmo del abusón”.

A) B)

C) D)
E)

Procesos:
Si un proceso sabe que tiene el ID más alto:
✓ Se elige a sí mismo coordinador enviando el mensaje coordinador a todos los
procesos cuyo ID sea más bajo (proceso abusón).

Si no tiene el ID más alto:


✓ Multidifunde el mensaje de elección entre todos los procesos con el ID más alto y
espera un mensaje respuesta.
1. Si tras un tiempo T no recibe ningún mensaje respuesta, se elige a si mismo
como coordinador.
2. Si recibe un mensaje respuesta, espera un mensaje coordinador.
o Si recibe un mensaje coordinador, almacena el ID del nuevo coordinador.
o Si no recibe ningún mensaje, comienza una nueva elección.
Si un proceso se recupera, o se lanza un proceso sustituto con el mismo ID, éste
comienza una nueva elección, aunque el coordinador actual esté funcionando.

Características:
✓ Cumple la Pervivencia del sistema distribuido, ya que todos los procesos conocen el
ID del coordinador al finalizar el proceso de elección.
✓ Presenta algunos problemas de Seguridad del sistema distribuido:
1. Si se cae el proceso P (coordinador), pero se recupera al mismo tiempo que otro
proceso Q decide ser el coordinador, algún proceso puede recibir dos mensajes
coordinador con distintos IDs.
2. Los valores de los tiempos de espera son imprecisos (el sistema no es síncrono).

✓ Rendimiento del sistema distribuido

Mejor caso Peor caso


El proceso con el segundo ID más alto detecta El proceso con el ID más bajo detecta el fallo
el fallo del coordinador del coordinador
N-2 mensajes coordinador O(N2)
▪ Algoritmo de Anillo
Otro algoritmo de elección se basa en el uso de un anillo. A diferencia de algunos
algoritmos de anillo, éste no utiliza un token. Suponemos que los procesos están física
o lógicamente ordenados, de tal forma que cada proceso sabe cuál es su sucesor.
Cuando cualquier proceso advierte que el coordinador no funciona, elabora un mensaje
de ELECCIÓN que contiene su propio número de proceso y envía el mensaje a su
sucesor. Si el sucesor falló, el remitente lo salta y se dirige al siguiente miembro del
anillo, al siguiente después de él, hasta que localice un proceso en ejecución. En cada
paso del camino, el remitente agrega su propio número de proceso a la lista del mensaje
para volverse un candidato a elegir como coordinador.
En algún momento, el mensaje regresa al proceso que inició todo. Ese proceso reconoce
este evento cuando recibe un mensaje entrante que contiene su propio número de
proceso. En ese punto, el tipo de mensaje cambia a COORDINADOR y circula una vez
más, esta vez para informar a todos que es el coordinador (el miembro de la lista con el
número mayor) y cuáles son los miembros del nuevo anillo. Cuando este mensaje ha
circulado una vez, es eliminado y todos vuelven al trabajo.
Algoritmo del anillo
Este algoritmo fue desarrollado por Chang y Roberts en 1974, el cual utiliza el “principio
de extinción selectiva”.
Este algoritmo se usa en las siguientes circunstancias:
- Los procesos están organizados, en cualquier orden, en un anillo.
- No conoce el número total de procesos.
- Cada proceso se comunica con su vecino.

1.1. Descripción
Muchas aplicaciones y servicios distribuidos se basan en la existencia de un proceso
diferenciado que coordina el trabajo de un conjunto de procesos. En todas estas
situaciones se requiere detectar que el proceso coordinador falla y elegir un nuevo
proceso que asuma el papel de coordinador. La elección requiere el acuerdo sobre quién
va a ser el nuevo y único coordinador. De nuevo, las decisiones se basan en la existencia
de plazos para la recepción de los mensajes de respuesta.

A diferencia de algunos algoritmos de anillo, éste no utiliza un token. Suponemos que los
procesos están física o lógicamente ordenados, de tal forma que cada proceso sabe cuál
es su sucesor. Cuando cualquier proceso advierte que el coordinador no funciona,
elabora un mensaje de ELECCIÓN que contiene su propio número de proceso y envía
el mensaje a su sucesor. Si el sucesor falló, el remitente lo salta y se dirige al siguiente
miembro del anillo, al siguiente después de él, hasta que localice un proceso en ejecución.
En cada paso del camino, el remitente agrega su propio número de proceso a la lista del
mensaje para volverse un candidato a elegir como coordinador. En algún momento, el
mensaje regresa al proceso que inició todo. Ese proceso reconoce este evento cuando
recibe un mensaje entrante que contiene su propio número de proceso. En ese punto, el
tipo de mensaje cambia a COORDINADOR y circula una vez más, esta vez para informar
a todos que es el coordinador (el miembro de la lista con el número mayor) y cuáles son
los miembros del nuevo anillo. Cuando este mensaje ha circulado una vez, es eliminado
y todos vuelven al trabajo.

Se puede ver en la imagen anterior lo que ocurre si dos procesos, 2 y 5, descubren


simultáneamente que el coordinador anterior, el proceso 7, ha fallado. Cada proceso
elabora un mensaje de ELECCIÓN y comienza a circular su mensaje, de modo
independiente uno de otro. En algún momento, ambos mensajes recorrerán todo el
camino, y tanto el proceso 2 como el 5 los convertirán en mensajes de COORDINADOR
con exactamente los mismos miembros y en el mismo orden. Cuando ambos hayan
hecho el recorrido nuevamente serán eliminados. Tener más mensajes en circulación no
ocasiona daños; a lo sumo, consume un poco de ancho de banda, pero no se considera
un desperdicio.

1.2. Funcionamiento
• Utiliza un sistema síncrono. Cada proceso tiene un canal con el siguiente
proceso en el anillo. Los mensajes circulan en sentido de las agujas del reloj.
• El proceso que inicia el algoritmo se marca como participante y
envía su identificador en un mensaje de elección a su vecino.
• Cuando un proceso recibe un mensaje de elección compara el identificador recibido
con el suyo.
• Si es menor el recibido y el proceso no es un participante,
sustituye el identificador en el mensaje por el suyo y lo reenvía al vecino y
se marca como participante.
• Si es mayor el recibido, reenvía el mensaje y se marca como participante.
• Si es menor el recibido y el proceso es un participante, no hace nada (no envía ningún
mensaje).
• Si el identificador coincide con el del proceso, ese proceso es el líder.
• El líder se marca como no participante y envía un mensaje elegido al siguiente
proceso.
• Cuando un proceso distinto al líder recibe este mensaje, anota qué
proceso es el líder y reenvía el mensaje.
A tomar muy encuentra en la implementación: Cuando un proceso Pi sospecha que el
coordinador falla, envía a su sucesor P(i+1) mod N un mensaje de elección
que contiene el identificador de Pi. Si Pi+1 no responde (ACK), Pi repite el
envío a Pi+2y así hasta que encuentra un proceso que confirma la recepción.

ALGORITMO DE BULLY
En sistemas distribuidos puede haber una necesidad de una operación para ser
ejecutada exclusivamente por un proceso. Para que un algoritmo de abusón sea
realizado, se elegirá un proceso que será responsable de la operación.
El algoritmo Bully es un algoritmo aplicado en sistemas distribuidos (sistemas
compuestos por más de un nodo de cálculo) para elegir al coordinador.

Para ello a grandes rasgos se puede decir que para aplicar este algoritmo cada
nodo proceso tiene un número de identificación ID. Cuando se inicia un proceso
de elección de coordinador mediante envió de mensajes entre los nodos acaba
por establecer el coordinador aquel que tiene un ID más alto.
Por ejemplo un algoritmo de bully se identifica por:
- Tener el propósito de elegir un líder en sistemas distribuidos.
- Sus procesos son identificados por un único número, y es atribuido antes
del inicio de bully.
- Busca elegir un proceso de mayor identificador, para que todos reconozcan
al nuevo líder
INCIDENCIAS:
El algoritmo de bully también llamado abusón en ingles, fue descubierto en el
año de 1982 por HECTOR GARCIA MOLLINA, PROFESOR DEL
DEPARTAMENTO DE CIENCIA Y COMPUTACION EN INGENIERIA
ELECTRICA, POR LA UNIVERSIDAD DE STANFORD.

Por este motivo (siempre manda el de número más alto) se llama Bully,
abusón en inglés

• El sistema es síncrono y utiliza tiempo de espera para la identificación de fallos


en los procesos.
• Se permite que los procesos se bloqueen/caigan durante la ejecución del
algoritmo.
• La entrega de mensajes entre procesos se supone fiable.
• Los IDs de los procesos deben ser conocidos.

Comparación con el Algoritmo en Anillo:

• Se supone que el sistema es síncrono.


• Utiliza el tiempo de espera para detectar fallos/caídas en los procesos.
• Cada proceso conoce qué procesos tienen el ID más alto que el suyo y puede
comunicarse con ellos.1
Tipos de mensaje

• Mensaje de Elección: Enviados para comunicar que se va a seleccionar un


nuevo coordinador.
• Mensaje de Respuesta: Encargados de responder al mensaje de elección.
• Mensaje de Coordinador: Enviado para comunicar el ID del proceso
seleccionado.
Como funciona :
• Cuando un proceso P detecta que el coordinador actual, por mensaje de
tiempo de espera o fallo, está caído o bloqueado, se encarga de iniciar
unas elecciones, este procedimiento se encargará de elegir el nuevo
coordinador realizando las siguientes acciones: (Hay que tener en cuenta
que es posible que varios procesos puedan descubrir la caída del
coordinador de forma concurrente).

1. P emite un mensaje de elección a todos los demás procesos con ID de


proceso más alto, esperando un "estoy aquí" (mensaje de respuesta u OK)
como respuesta de los procesos aún activos.
2. Si P no recibe ninguna contestación de algún proceso cuyo ID sea superior,
automáticamente es elegido como coordinador y multidifunde al resto de
procesos que es el nuevo coordinador (mensaje de coordinador).
3. Si P recibe una contestación de un proceso con ID más alto, P espera una
cierta cantidad de tiempo para que el proceso multidifunda el mensaje
comunicando al resto de procesos que ahora es él el coordinador. Si no
recibe este mensaje a tiempo, reenvía el mensaje de elección.
4. Si P recibe un mensaje de elección de otro proceso con un ID menor, envía
un mensaje "estoy aquí" de vuelta y empieza de nuevo la elección de
coordinador.

Aquél proceso con identificador más alto (el más "grandullón") es el que se hace
coordinador. De esto le viene el nombre al algoritmo - un proceso con un ID más
alto intimida a un proceso con un ID más bajo. Hay que tener en cuenta que
si P recibe un mensaje de coordinador de un proceso con un ID más bajo,
inmediatamente inicia una nueva elección.


El Proceso 4 detecta que el Coordinador (Proceso 7) está caído.

El Proceso 4 notifica a los procesos con un ID superior que el Coordinador está


caído.

Los procesos que están vivos y han recibido el mensaje, devuelven un OK.

Los Procesos 5 y 6 repiten los pasos efectuados por el Proceso 4.


El Proceso 6 envía OK al proceso 5 y detecta que es el proceso con mayor ID.

Como el Proceso 6 es el que tiene el mayor ID se proclama Coordinador y se lo


comunica al resto de procesos.

PROCESOS:
Si un proceso sabe que tiene el ID más alto:

• Se elige a sí mismo coordinador enviando el mensaje coordinador a todos los


procesos cuyo ID sea más bajo (proceso abusón).

Si no tiene el ID más alto:

• Multidifunde el mensaje de elección entre todos los procesos con el ID más


alto y espera un mensaje respuesta.

1. Si tras un tiempo T no recibe ningún mensaje respuesta, se elige a


si mismo como coordinador.
2. Si recibe un mensaje respuesta, espera un mensaje coordinador.
• Si recibe un mensaje coordinador, almacena el ID del nuevo
coordinador.
• Si no recibe ningún mensaje, comienza una nueva elección.

Si un proceso se recupera, o se lanza un proceso sustituto con el mismo ID,


éste comienza una nueva elección, aunque el coordinador actual esté
funcionando.
VENTAJAS:
o Es simplificado
DESVENTAJAS:
o Tiene grandes tráfico de redes
o Mucho tiempo gasta para escoger un nuevo coordinador.

CARACTERÍSTICAS.

• Cumple la Permanencia del sistema distribuido, ya que todos los procesos


conocen el ID del coordinador al finalizar el proceso de elección.

• Presenta algunos problemas de Seguridad del sistema distribuido:

1. Si se cae el proceso P (coordinador), pero se recupera al mismo tiempo


que otro proceso Q decide ser el coordinador, algún proceso puede
recibir dos mensajes coordinador con distintos IDs.
2. Los valores de los tiempos de espera son imprecisos (el sistema no es
síncrono).

II. Conclusiones
Para decidir sobre el valor de variables u otros asuntos debemos elegir un nodo
coordinador. Los algoritmos de elección buscan el nodo con id más alto mediante
comunicación en anillo o multidifusión (bully).

La sincronización entre procesos con frecuencia requiere que uno de los procesos actúe
como coordinador. En los casos donde el coordinador no es fijo, es necesario que los
procesos de un cálculo distribuido decidan qué proceso será el coordinador. Tal decisión
se toma mediante algoritmos de elección. Los algoritmos de elección se utilizan
básicamente en los casos donde el coordinador puede fallar. Sin embargo, también
pueden aplicarse para la selección de superpuntos en sistemas punto a punto.

En general, la elección de algoritmos intenta localizar el proceso que tenga el número más
grande y designarlo como coordinador. El objetivo de un algoritmo de elección es
garantizar que cuando inicie una elección, ésta concluya con todos los procesos de
acuerdo con el que será el nuevo coordinador.
Elecciones en sistemas de gran escala (Joel)

Durante la última década hemos presenciado el crecimiento explosivo de sistemas


distribuidos de gran escala, con cientos, miles o millones de usuarios conectados.
Desde telefonía y televisión sobre IP hasta juegos online y redes sociales, estas
aplicaciones se han movido con vertiginosa velocidad de narrativas de ciencia
ficción y bosquejos de diseño a componentes asumidos de nuestro contexto diario.
La creciente inter-conexión y la capacidad potencialmente ilimitada de nuestros
dispositivos computacionales han redefinido el “borde” de la red de estos sistemas,
de universidades y laboratorios de investigación, a nuestras casas, autos y bolsillos.
Este curso revisa ideas y proyectos investigando las implicaciones de estos cambios
“demográficos”, incluyendo los retos que presentan a nuestras ideas sobre el
diseño, implementación y evaluación de sistemas distribuidos. El objetivo principal
del curso es prepararlos para hacer investigación en el área general de sistemas
distribuidos y redes; con esto en mente, el curso cubre también temas generales
tales como formas de leer y presentar artículos, la generación, critica, y
comunicación de ideas de investigación, comunidades y sus conferencias, etc.
Recomendaciones

Evitar las fuentes de retraso que pueden ser: sobrecarga de puntos hacia un solo
superpunto, esto quiere decir que se repartan uniformemente los puntos a los
superpuntos

Asignación para el laboratorio.


Los sistemas UNIX proporcionan muchas facilidades para man-tener las
computadoras en sincronía, de manera notable la combinación de la herramienta
Crontab (la cual permite agendar automáticamente las operaciones) y varios
comandos de sincronizaciónresulta poderosa. Configure un sistema UNIX que
mantenga exacto el tiempo local dentro del rangode un solo segundo. De igual
forma, configure una herramienta automática de respaldo mediante laque cierto
número de archivos cruciales se transfieran automáticamente a una máquina
remota unavez cada 5 minutos. Su solución debe ser eficiente con respecto al uso
del ancho de banda.
No es lo mismo decir punto a punto, que súper punto a varios puntos, bajo esa
premisa se entiende que la gran escala se manifiesta con un superpunto, asi
también con un grupo de superpuntos que tiene como requisitos principales:
1 Los nodos normales deben tener acceso de baja latencia a los superpuntos.
2. Los superpuntos deben distribuirse uniformemente a través de la red
sobrepuesta.
3. Debe haber una porción predefinida de superpuntos, relativa al número total
de nodos de la red sobrepuesta.
4. Cada superpunto no debe necesitar servir a más de un número fijo de nodos
normales.
Por fortuna estos requisitos son fáciles de cumplir con los sistemas punto a punto
que son las bases de los Superpuntos a punto
Por fortuna, estos requerimientos son relativamente fáciles de cumplir en la mayoría
de los siste-mas punto a punto, dado que la red sobrepuesta es estructurada (como
en los sistemas basados enDHT), o aleatoriamente no estructurada (como, por
ejemplo, puede notarse en las soluciones basa-das en el gossip). Demos un vistazo
a las soluciones propuestas por Lo y colaboradores (2005).En el caso de los
sistemas basados en DHT, la idea básica es reservar una fracción del
espacioidentificador para los superpuntos. Recuerde que en los sistemas basados
en DHTcada nodo reci-be un identificador de
M bits que es asignado aleatoria y uniformemente. Ahora suponga que reser-vamos
los primeros k bits (es decir, los que están más a la izquierda) para identificar
superpuntos.Por ejemplo, si ecesitamos N superpuntos, entonces los primeros
[log2( N )] bits de cualquier clave puede utilizarse para identificar a estos nodos.

Bibliografía

• Mendoza Gatica, M. (2013). Algoritmo de Elección en Anillos [Blog]. Disponible en:


http://distribui2.blogspot.pe/2013/06/de-anillo-de-fichas-los-procesos-estan.html
• Tanenbaum, A. (2008) SISTEMAS DISTRIBUIDOS Principios y Paradigmas. Estado de
México, México: Pearson Educación
• Santamaría, R. (s.f.). Sistemas Distribuidos Coordinación y Acuerdo. [ebook] Rodrigo
Santamaría. Disponible en: http://vis.usal.es/rodrigo/documentos/sisdis/teoria/6-
coordinacion.pdf [20 Feb. 2018].
• Sistemas Distribuidos Sincronización [ebook]. (s.f.). Disponible en:
http://www.dia.eui.upm.es/asignatu/sis_dis/Paco/Sincronizacion.pdf [20 Feb. 2018].
• Hector Garcia-Molina, Elections in a Distributed Computing System, IEEE
Transactions on Computers, Vol. C-31, No. 1, January (1982) 48-59
• G. Colouris, J. Dollimore, T. Kindberg and G. Blair. Distributed Systems:
Concepts and Design (5th Ed). Addison-Wesley.

• 2011https://youtu.be/K44x_VQmUs8t

Potrebbero piacerti anche