5.32.2.5 Sistemas distribuídos (15 horas) [Habilidades a,b]

Referencias Bibliográficas: [Coulouris et al., 2011] Temas
  1. Fallos:
    1. Fallos basados en red (incluyendo particiones) y fallos basados en nodos
    2. Impacto en garantías a nivel de sistema (p.e., disponibilidad)
  2. Envío de mensajes distribuido:
    1. Conversión y transmisión de datos
    2. Sockets
    3. Secuenciamiento de mensajes
    4. Almacenando Buffering, renviando y desechando mensajes
  3. Compensaciones de diseño para Sistemas Distribuidos:
    1. Latencia versus rendimiento
    2. Consistencia, disponibilidad, tolerancia de particiones
  4. Diseño de Servicio Distribuido:
    1. Protocolos y servicios Stateful versus stateless
    2. Diseños de Sesión (basados en la conexión)
    3. Diseños reactivos (provocados por E/S) y diseños de múltiples hilos
  5. Algoritmos de Distribución de Núcleos:
    1. Elección, descubrimiento
Objetivos de Aprendizaje
  1. Distinguir las fallas de red de otros tipos de fallas [Familiarizarse]
  2. Explicar por qué estructuras de sincronización como cerraduras simples (locks) no son útiles en la presencia de fallas distribuidas [Familiarizarse]
  3. Escribir un programa que realiza cualquier proceso de marshalling requerido y la conversión en unidades de mensajes, tales como paquetes, para comunicar datos importantes entre dos hosts [Usar]
  4. Medir el rendimiento observado y la latencia de la respuesta a través de los hosts en una red dada [Usar]
  5. Explicar por qué un sistema distribuido no puede ser simultaneamente Consistente (Consistent), Disponible (Available) y Tolerante a fallas (Partition tolerant). [Familiarizarse]
  6. Implementar un servidor sencillo - por ejemplo, un servicio de corrección ortográfica [Usar]
  7. Explicar las ventajas y desventajas entre: overhead, escalabilidad y tolerancia a fallas entre escojer un diseño sin estado (stateless) y un diseño con estado (stateful) para un determinado servicio [Familiarizarse]
  8. Describir los desafios en la escalabilidad, asociados con un servicio cresciente para soportar muchos clientes, así como los asociados con un servicio que tendrá transitoriamente muchos clientes [Familiarizarse]
  9. Dar ejemplos de problemas donde algoritmos de consenso son requeridos, por ejemplo, la elección de líder [Usar]

Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM