La última sesión de sistemas distribuidos nos llevó a culminar el análisis del algortimo de consenso con detectores de fallos no fiables utilizando el detector <>S. En cuatro rondas y teniendo (n/2)+1 procesos correctos, se puede llegar a consenso. Algunas ideas claves son que el algortimo mantiene en todo momento la “viveza”. tarde o temprano se llega al consenso, y el hecho de que si las cosas no van bien, se pospone la decisión hasta que las cosas vayan bien en el sistema distribuido (temporización de las comunicaciones, caida de nodos …).
A continuación comenzamos a ver tecnologías básicas con las que se realizan los sistemas distribuidos, y nos centramos en los temas de COORDINACIÓN y ACUERDO.
Lo primero de lo que hablamos fueron de los relojes físicos y lógicos. Con relojes físicos es complicado lograr una sincronización con precisión de microsegundos, hay límites físicos a coordinar con relojes físicos. Por ello, se buscó utilizar otro tipo de sistema de coordinación y Lamport propuso los relojes lógicos, en los que se ordenan los eventos de un sistema en función de la causalidad (un evento es causa de otro). Cada nodo mantiene un contador que va incrementando cuando suceden eventos. Lo aumenta en 1 si el evento es local o si reciben un evento remoto con un contador inferior al suyo. Si el evento que se recibe tiene un valor del contador mayor, actualiza el contador utilizando este y sumándole 1. El problema con los relojes lógicos es que no orden los eventos que no están relacionados.
Pasamos a definir las propiedades de los problemas de coordinación y acuerdo: terminación/termination (viveza), validez/validity (tarde o temprano ocurre lo que esperamos), acuerdo/agreement (decisiones por procesos correctos iguales) e integridad/integrity (evitar soluciones ilógicas).
Las comunicaciones a un grupo son base de muchos de los sistemas distribuidos. Para llevarlas a cabo, nos puede ayudar mucho la tecnología sobre la que basemos el sistema distribuido, como por ejemplo IP Multicast, que permite utilizar a veces mejor el medio físico (ethernet), el nodo emisor tiene menos trabajo (no tiene que ir uno por uno enviando el mensaje). En IP Multicast la membresía es dinámica y el grupo abierto, utilizando UDP como protocolo base de la comunicación (ni fiablidad ni ordenación).
Los nodos que son miembros de un grupo forma la vista del sistema distribuido. El sistema de comunicación a grupo debe de gestionar la membresía así como el radiado a todos los miembros del grupo de mensajes. Los grupos pueden ser cerrados (sólo los miembros pueden radiar) y abiertos (cualquier puede radiar al grupo). En la entrega de los mensajes diferenciremos entre los momentos de: envío, recepción y entrega (a la aplicación del nodo).
Sobre el tipo de radiado, puede ser fiable (realible) que llega a todos o a ningún correcto, no fiable (best effort) y uniforme (uniform) donde si un nodo/proceso correcto o no correcto recibe un mensaje, lo tienen que recibir todos.
Seguiremos en la próxima sesión con los ordenación en la entrega de los eventos del sistema distribuido.