Referencias Bibliográficas: [Coulouris et al., 2011]
Temas
- Fallos:
- Fallos basados en red (incluyendo particiones) y fallos basados en nodos
- Impacto en garantías a nivel de sistema (p.e., disponibilidad)
- Envío de mensajes distribuido:
- Conversión y transmisión de datos
- Sockets
- Secuenciamiento de mensajes
- Almacenando Buffering, renviando y desechando mensajes
- Compensaciones de diseño para Sistemas Distribuidos:
- Latencia versus rendimiento
- Consistencia, disponibilidad, tolerancia de particiones
- Diseño de Servicio Distribuido:
- Protocolos y servicios Stateful versus stateless
- Diseños de Sesión (basados en la conexión)
- Diseños reactivos (provocados por E/S) y diseños de múltiples hilos
- Algoritmos de Distribución de Núcleos:
- Elección, descubrimiento
Objetivos de Aprendizaje (Learning Outcomes)
- Distinguir las fallas de red de otros tipos de fallas [Familiarizarse]
- Explicar por qué estructuras de sincronización como cerraduras simples (locks) no son útiles en la presencia de fallas distribuidas [Familiarizarse]
- 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]
- Medir el rendimiento observado y la latencia de la respuesta a través de los hosts en una red dada [Usar]
- Explicar por qué un sistema distribuido no puede ser simultaneamente Consistente (Consistent), Disponible (Available) y Tolerante a fallas (Partition tolerant). [Familiarizarse]
- Implementar un servidor sencillo - por ejemplo, un servicio de corrección ortográfica [Usar]
- 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]
- 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]
- 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