Estas notas son extraídas fundamentalmente del libro "Distributed Systems for fun and profit", de mixu[1]
System of networked computers that communicate and coordinate their actions only by passing messages. (Coulouris)
A collection of independent computers that appear to the users as a single coherent system. (Tanenbaum)
Distributed programming is the art of solving the same problem that you can solve on a single computer using multiple computers. (Mikito Takada)
Equipos autonomos
Pasaje de mensajes
Memoria y Procesador
Red de datos
¿Cuando surge la necesidad de usar un SD?
El "tamaño" de los problemas a resolver crece a mayor velocidad que el poder de computo del Hardware
La "nube" son grandes sistemas distribuidos donde el problema a resolver es la asignación flexible y dinámica de recursos computacionales a múltiples clientes de forma concurrente
A su vez, los clientes de CC construyen sistemas distribuidos sobre el servicio ofrecido por los proveedores
Contar la cantidad de personas en una habitación
Contar la cantidad de personas en un país
Definición: Capacidad de un sistema de manejar una cantidad creciente de trabajo de forma adecuada, o en su defecto, que ampliar su capacidad no degrade el rendimiento general [Wikipedia]
Dos aspectos a considerar
Performance (Latencia)
Disponibilidad (Tolerancia a fallas)
Definición: Cantidad de trabajo útil de un sistema en relación al tiempo y recursos utilizados. [Wikipedia]
Latencia
Throughput
Uso de recursos
Trade off entre estos recursos, siempre
Definición: Proporción de tiempo en el cual un usuario puede utilizar un sistema. [Wikipedia]
Un SD permite construir un sistema confiable (Alta disponibilidad) sobre componentes no confiables (Redes de datos, equipos)
La disponibilidad se alcanza mediante la introducción de redundancia (de hosts, de datos, de servicios).
Cantidad de nodos
Distancia entre los nodos
¿Ventajas? ¿Problemas?
Consistencia
Disponibilidad
Tolerancia a la Partición
Consistencia fuerte
Consistencia débil
Consistencia eventual
Cache de datos (Browser y Server)
¿Como afecta la disponibilidad?
¿Como afecta la consistencia?
¿En que niveles se puede tener una Cache?
Redes de Distribución de Contenido (CDN)
¿Como afecta la disponibilidad?
¿Como afecta la consistencia?
¿En que contexto se requiere consistencia sacrificando disponibilidad?