Sistemas Distribuidos en Red

Usted está aquí

Créditos
6
Tipos
Complementaria de especialidad (Tecnologías de la información)
Requisitos
  • Precorrequisito: SO
  • Precorrequisito: XC
Departamento
AC
Este curso proporciona una visión general de los principios fundamentales de los sistemas distribuidos. Los contenidos incluyen la programación distribuida, la comunicación y la coordinación entre procesos distribuidos, las transacciones distribuidas, la replicación, los sistemas de ficheros distribuidos, y algunas aplicaciones distribuidas com la Web y los sistemas peer-to-peer. También se incluye una introducción a temes avanzados com el Cloud Computing, el Grid Computing, y el Mobile Computing .

Profesorado

Responsable

  • Jordi Guitart Fernandez ( )

Horas semanales

Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6

Competencias

Competencias Técnicas

Competencias técnicas comunes

  • CT5 - Analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, escogiendo el paradigma y los lenguajes de programación más adecuados.
    • CT5.6 - Demostrar conocimiento y capacidad de aplicación de los principios fundamentales y de las técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real.
  • CT6 - Demostrar conocimiento y comprensión del funcionamiento interno de un computador y del funcionamiento de las comunicaciones entre ordenadores.
    • CT6.4 - Demostrar conocimiento y capacidad de aplicación de las características, las funcionalidades y la estructura de los Sistemas Distribuidos, de las Redes de Computadores y de Internet que permita su uso y su administración, así como el diseño y la implementación de aplicaciones basadas en ellas.

Competencias Técnicas de cada especialidad

Especialidad tecnologías de la información

  • CTI1 - Definir, planificar y gestionar la instalación de la infraestructura TIC de la organización.
    • CTI1.3 - Seleccionar, desplegar, integrar y gestionar sistemas de información que satisfagan las necesidades de la organización con los criterios de costo y calidad identificados.
  • CTI3 - Diseñar soluciones que integren tecnologías de hardware, software y comunicaciones (y capacidad de desarrollar soluciones específicas de software de sistemas) para sistemas distribuidos y dispositivos de computación ubícua.
    • CTI3.1 - Concebir sistemas, aplicaciones y servicios basados en tecnologías de red, incluyendo Internet, web, comercio electrónico, multimedia, servicios interactivos y computación ubicua.
    • CTI3.2 - Implementar y gestionar sistemas ubicuos (mobile computing systems).
    • CTI3.4 - Diseñar software de comunicaciones.

Competencias Transversales

Lengua extranjera

  • G3 [Avaluable] - Conocer el idioma inglés con un nivel adecuado de forma oral y por escrito, y con consonancia con las necesidades que tendrán los graduados y graduadas en ingeniería informática. Capacidad de trabajar en un grupo multidisciplinar y en un entorno multilingüe, y de comunicar, tanto por escrito como de forma oral, conocimientos, procedimientos, resultados e ideas relacionadas con la profesión de ingeniero técnico en informática.
    • G3.1 - Comprender y utilizar eficazmente manuales, especificaciones de productos y otra información de carácter técnico escrita en inglés.

Objetivos

  1. Entender la definición de sistema distribuido y sus posibles aplicaciones, además de los desafíos que se deben afrontar para su diseño e implementación.
    Competencias relacionadas: CTI3.1, CTI3.4, CT6.4, CTI1.3,
    Subcompetences:
    • Conocer las posibles aplicaciones de un sistema distribuido
    • Poner ejemplos de sistemas distribuidos
    • Entender los desafíos para diseñar e implementar un sistema distribuido: heterogeneidad, ausencia de visión global, seguridad, coordinación, asincronía, apertura, transparencia, tolerancia a fallos, escalabilidad
    • Entender la definición de sistema distribuido
  2. Conocer las arquitecturas de sistema básicas en los sistemas distribuidos.
    Competencias relacionadas: CTI3.1, CTI3.4, CT6.4, CT5.6,
    Subcompetences:
    • Conocer las arquitecturas de sistema básicas en los sistemas distribuidos: centralizadas (cliente-servidor), descentralizadas (peer-to-peer), híbridas
  3. Conocer los mecanismos básicos de comunicación en un sistema distribuido: invocación de operaciones remotas, comunicación basada en mensajes, comunicación basada en eventos y comunicación basada en canales (streams), y escribir aplicaciones distribuidas que se comuniquen mediante el envío de mensajes.
    Competencias relacionadas: CTI3.1, CTI3.4, CT6.4, CTI1.3, CT5.6,
    Subcompetences:
    • Conocer los paradigmas de comunicación básicos en los sistemas distribuidos: invocación remota de procedimiento, paso de mensajes, colas de mensajes, comunicación de grupos, publicación/subscripción, espacios de datos compartidos, memoria compartida, código móvil, orientado a stream
    • Escribir aplicaciones distribuidas que se comuniquen mediante el envío de mensajes
    • Conocer el mecanismo de comunicación basada en streams: modos de transmisión, calidad de servicio
    • Conocer el mecanismo de comunicación basada en eventos: sistemas de publicación/subscripción
    • Conocer los diferentes tipos de comunicación en un sistema distribuido: directa vs. indirecta (desacoplamiento espacial y temporal), persistente vs. transitoria, síncrona vs. asíncrona, discreta vs. continua
    • Conocer el mecanismo de comunicación basada en mensajes: transitoria (Sockets) vs. persistente (MOM)
    • Conocer el mecanismo de comunicación mediante la invocación de procedimientos remotos (RPC): operación básica, paso de parámetros, extensiones del modelo básico, tratamiento de fallos, invocación de métodos remotos (RMI)
  4. Entender la problemática del tiempo y la ordenación de eventos en un sistema distribuido y explicar e implementar los mecanismos de relojes lógicos para atacar esta problemática y los algoritmos para sincronizar relojes físicos en un sistema distribuido.
    Competencias relacionadas: CTI3.1, CT6.4, CTI1.3, CT5.6,
    Subcompetences:
    • Entender la problemática del tiempo y la ordenación de eventos en un sistema distribuido
    • Explicar e implementar los algoritmos para sincronizar relojes físicos en un sistema distribuido: Cristian (NTP), Berkeley
    • Explicar e implementar los mecanismos de relojes lógicos para atacar esta problemática: relación happened-before, relojes lógicos de Lamport (escalares, vectoriales)
  5. Describir, comparar e implementar los algoritmos para la coordinación de procesos en un sistema distribuido, incluyendo la coordinación necesaria para garantizar exclusión mutua, elección de líder, comunicación en grupo multicast, y consenso.
    Competencias relacionadas: CTI3.1, CT6.4, CTI1.3, CT5.6,
    Subcompetences:
    • Describir, comparar e implementar los algoritmos para la coordinación de procesos en un sistema distribuido para garantizar exclusión mutua: algoritmos basados ​​en permiso (centralizado, Lin, Maekawa, Ricart & Agrawala), algoritmos basados ​​en token (token ring)
    • Describir, comparar e implementar los algoritmos para la coordinación de procesos en un sistema distribuido para la comunicación en grupo multicast: multicast fiable básico, multicast fiable escalable, multicast ordenado (FIFO, causal, total), atomic multicast
    • Describir, comparar e implementar los algoritmos para la coordinación de procesos en un sistema distribuido para la elección de líder: Bully, Ring
  6. Comprender la aplicación de la replicación en un sistema distribuido, además de la problemática que se introduce a nivel de consistencia, y describir los modelos de consistencia correspondientes y su implementación.
    Competencias relacionadas: CTI3.1, CT6.4, CTI1.3, CTI3.2, CT5.6,
    Subcompetences:
    • Describir implementaciones concretas de modelos de consistencia: protocolos basados ​​en primario (remote-write, local-write) y protocolos de escritura replicada (replicación activa, protocolos basados ​​en quórum)
    • Comprender la aplicación de la replicación en un sistema distribuido, además de la problemática que se introduce a nivel de consistencia
    • Describir los modelos de consistencia relajada centrados en los datos: uso de variables de sincronización
    • Describir los modelos de consistencia centrados en el cliente: eventual, monotonic-read, monotonic-write, read-your-writes, writes-follow-reads
    • Conocer los detalles de implementación de los modelos de consistencia en relación a la ubicación de las réplicas (permanentes, iniciadas por el servidor, iniciadas por el cliente) y la propagación de actualizaciones (push-pull protocols)
    • Describir los modelos de consistencia fuerte centrados en los datos: estricta, secuencial, causal, FIFO
  7. Conocer y comparar las características básicas de los servicios de resolución de nombres planos, estructurados y basados ​​en atributos, e implementar y evaluar uno de estos sistemas.
    Competencias relacionadas: CTI3.1, CT6.4, CTI1.3, CTI3.2,
    Subcompetences:
    • Implementar y evaluar un servicio DNS simple
    • Conocer y comparar las características básicas de los servicios de resolución de nombres planos: broadcasting, forwarding pointers, soluciones basadas en home, DHTs
    • Conocer y comparar las características básicas de los servicios de resolución de nombres estructurados: name spaces, resolución iterativa, resolución recursiva, DNS
    • Conocer y comparar las características básicas de los servicios de resolución de nombres basados ​​en atributos: servicios de directorio (LDAP)
  8. Conocer y comparar las características básicas de los sistemas de ficheros distribuidos (e.g. NFS).
    Competencias relacionadas: CTI3.1, CT6.4, CTI1.3, CTI3.2,
    Subcompetences:
    • Comprender la semántica de compartición de ficheros: semántica UNIX, semántica de sesión, ficheros inmutables, semántica transaccional
    • Conocer y comparar las características básicas del sistema de ficheros distribuido NFS
    • Conocer y comparar las características básicas del sistema de ficheros distribuido Coda
    • Conocer las arquitecturas de los sistemas de ficheros distribuidos: modelo de acceso remoto, modelo upload / download, idea básica de las arquitecturas en cluster (stripping + replicación)
  9. Conocer y comparar las características básicas de los sistemas distribuidos basados ​​en web: servidores web, servidores de aplicaciones, Web Services, Content Distribution Networks (CDN), e implementar y evaluar uno de estos sistemas.
    Competencias relacionadas: CTI3.1, CTI3.4, CT6.4, CTI1.3, CT5.6,
    Subcompetences:
    • Implementar y evaluar un servidor web simple
    • Conocer los mecanismos de sincronización en los sistemas distribuidos basados ​​en Web
    • Conocer los protocolos de comunicación en los sistemas distribuidos basados ​​en Web: HTTP, SOAP, WSDL
    • Conocer los mecanismos de caching y replicación en los sistemas distribuidos basados ​​en Web: Proxies, Content Distribution Networks (CDN): Akamai, esquemas de redirección (URL rewriting, DNS redirection)
    • Conocer las arquitecturas de los sistemas distribuidos basados ​​en Web: cliente/servidor, servlets, clusters de servidores, Web Services
    • Conocer los servicios de nombres en los sistemas distribuidos basados ​​en Web: URL, DNS, UDDI
  10. Comprender el modelo de computación Peer-to-Peer (P2P), comparar las características de los sistemas P2P no estructurados y los estructurados basados ​​en DHTs, e implementar y evaluar uno de estos sistemas.
    Competencias relacionadas: CTI3.1, CT6.4, CTI1.3, CT5.6,
    Subcompetences:
    • Comprender el modelo de computación Peer-to-Peer (P2P), sus ventajas y sus aplicaciones
    • Comparar las características de los sistemas P2P no estructurados centralizados: BitTorrent
    • Comparar las características de los sistemas P2P estructurados basados ​​en DHTs: Chord: organización del anillo, inserción de elementos, búsqueda de elementos con tablas de finger, inserción de nodos
    • Implementar y evaluar un sistema P2P estructurado
    • Comparar las características de los sistemas P2P no estructurados jerárquicos: FastTrack
    • Comparar las características de los sistemas P2P no estructurados descentralizados con búsqueda por inundación: Gnutella
  11. Conocer los paradigmas más importantes de computación distribuida (computación voluntaria, Grid y Cloud) y sus características.
    Competencias relacionadas: CTI3.1, CT6.4, CTI1.3,
    Subcompetences:
    • Conocer el paradigma Cloud de computación distribuida, sus características y sus aplicaciones: Utility computing, tipo de Clouds (público, privado, comunitario, híbrido), diferencia respecto al Grid, servicios Cloud (IaaS, PAAS, SaaS), tecnologías base de implementación, infraestructura Cloud (datacenters), obstáculos para la consolidación del Cloud
    • Conocer el paradigma Grid de computación distribuida, sus características y sus aplicaciones: Virtual organizations (VO), arquitectura OGSA, diferencia respecto a la computación cluster y distribuida
    • Conocer el paradigma de computación distribuida voluntaria: BOINC
  12. Conocer los paradigmas de Mobile y Ubiquitous Computing y su problemática.
    Competencias relacionadas: CTI3.1, CT6.4, CTI3.2,
    Subcompetences:
    • Conocer los paradigmas de Mobile y Ubiquitous Computing y su problemática: volatilidad, asociación, interoperabilidad, sensores y context-awareness, adaptación
  13. Comprender artículos, enunciados, y en general cualquier fuente de información de carácter técnico escrita en inglés
    Competencias relacionadas: G3.1,

Contenidos

  1. Conceptos de sistemas distribuidos
    Definición de sistema distribuido. Posibles aplicaciones de un sistema distribuido. Ejemplos de sistemas distribuidos. Desafíos para diseñar e implementar un sistema distribuido: heterogeneidad, ausencia de visión global, seguridad, coordinación, asincronía, apertura , transparencia, tolerancia a fallos, escalabilidad. Arquitecturas de sistema básicas en los sistemas distribuidos: centralizadas (cliente-servidor), descentralizadas (peer-to-peer), híbridas
  2. Comunicación entre procesos
    Tipos de comunicación en un sistema distribuido: directa vs. indirecta (desacoplamiento espacial y temporal), persistente vs. transitoria, síncrona vs. asíncrona, discreta vs. continua. Paradigmas de comunicación básicos en los sistemas distribuidos: invocación remota de procedimiento, paso de mensajes, colas de mensajes, comunicación de grupos, publicación/subscripción, espacios de datos compartidos, memoria compartida, código móvil, orientado a stream. Invocación de procedimientos remotos (RPC): operación básica, paso de parámetros, extensiones del modelo básico, tratamiento de fallos, invocación de métodos remotos (RMI). Comunicación basada en mensajes: transitoria (Sockets) vs. persistente (MOM). Comunicación basada en eventos: sistemas de publicación/subscripción. Comunicación basada en streams: modos de transmisión, calidad de servicio
  3. Tiempo y ordenación
    Tiempo y ordenación de eventos en un sistema distribuido. Relojes lógicos: relación happened-before, relojes lógicos de Lamport (escalares, vectoriales). Algoritmos para sincronizar relojes físicos en un sistema distribuido: Cristian (NTP), Berkeley.
  4. Coordinación y consenso
    Coordinación de procesos en un sistema distribuido para garantizar exclusión mutua: algoritmos basados ​​en permiso (centralizado, Lin, Maekawa, Ricart & Agrawala), algoritmos basados ​​en token (token ring). Coordinación de procesos en un sistema distribuido para la elección de líder: Bully, Ring. Coordinación de procesos en un sistema distribuido para la comunicación en grupo multicast: multicast fiable básico, multicast fiable escalable, multicast ordenado (FIFO, causal, total), atomic multicast.
  5. Consistencia y replicación
    Replicación y consistencia en un sistema distribuido. Modelos de consistencia fuerte centrados en los datos: estricta, secuencial, causal, FIFO. Modelos de consistencia relajada centrados en los datos: uso de variables de sincronización. Modelos de consistencia centrados en el cliente: eventual, monotonic-read, monotonic-write, read-your-writes, writes-follow-reads. Ubicación de las réplicas (permanentes, iniciadas por el servidor, iniciadas por el cliente) y propagación de actualizaciones (push-pull protocols). Implementaciones de modelos de consistencia: protocolos basados ​​en primario (remote-write, local-write) y protocolos de escritura replicada (replicación activa, protocolos basados ​​en quórum)
  6. Sistemas de nombres
    Servicios de resolución de nombres planos: broadcasting, forwarding pointers, soluciones basadas en home, DHTs. Servicios de resolución de nombres estructurados: name spaces, resolución iterativa, resolución recursiva, DNS. Servicios de resolución de nombres basados ​​en atributos: servicios de directorio (LDAP)
  7. Sistemas de ficheros distribuidos
    Arquitecturas de los sistemas de ficheros distribuidos: modelo de acceso remoto, modelo upload / download, idea básica de las arquitecturas en cluster (stripping + replicación). Semántica de compartición de ficheros: semántica UNIX, semántica de sesión, ficheros inmutables, semántica transaccional. Características básicas del sistema de ficheros distribuido Coda
  8. Sistemas distribuidos basados ​​en Web
    Arquitecturas de los sistemas distribuidos basados ​​en Web: cliente/servidor, servlets, clusters de servidores, Web Services. Protocolos de comunicación en los sistemas distribuidos basados ​​en Web: HTTP, SOAP, WSDL. Servicios de nombres en los sistemas distribuidos basados ​​en Web: URL, DNS, UDDI. Sincronización en los sistemas distribuidos basados ​​en Web. Caching y replicación en los sistemas distribuidos basados ​​en Web: Proxies, Content Distribution Networks (CDN): Akamai, esquemas de redirección (URL rewriting, DNS redirection)
  9. Sistemas Peer-to-Peer (P2P)
    Modelo de computación Peer-to-Peer (P2P): ventajas y aplicaciones. Sistemas P2P no estructurados centralizados: BitTorrent. Sistemas P2P no estructurados descentralizados con búsqueda por inundación: Gnutella. Sistemas P2P no estructurados jerárquicos: FastTrack. Sistemas P2P estructurados basados ​​en DHTs: Chord: organización del anillo, inserción de elementos, búsqueda de elementos con tablas de finger, inserción de nodos; Kademlia: organización del árbol y estado del nodo, búsqueda e inserción de nodos, búsqueda e inserción de elementos.
  10. Sistemas de computación distribuida
    Paradigma de computación distribuida voluntaria: BOINC. Paradigma Grid de computación distribuida, sus características y sus aplicaciones: Virtual organizations (VO), arquitectura OGSA, diferencia respecto a la computación cluster y distribuida. Paradigma Cloud de computación distribuida, sus características y sus aplicaciones: Utility computing, tipo de Clouds (público, privado, comunitario, híbrido), diferencia respecto al Grid, servicios Cloud (IaaS, PAAS, SaaS), tecnologías base de implementación, infraestructura Cloud (datacenters), obstáculos para la consolidación del Cloud
  11. Sistemas móviles y ubicuos
    Sistemas móviles y ubicuos: volatilidad, asociación, interoperabilidad, sensores y context-awareness, adaptación

Actividades

Actividad Acto evaluativo


Desarrollo del tema "Conceptos de sistemas distribuidos"

Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
  • Teoría: Definición de sistema distribuido. Posibles aplicaciones de un sistema distribuido. Ejemplos de sistemas distribuidos. Desafíos para diseñar e implementar un sistema distribuido: heterogeneidad, ausencia de visión global, concurrencia, ausencia de un único punto de control, seguridad, asincronía, apertura , transparencia, tolerancia a fallos, escalabilidad. Estilos arquitectónicos básicos en los sistemas distribuidos: por niveles, basado en objetos, centrado en los datos, basado en eventos, espacios de datos compartidos. Arquitecturas de sistema básicas en los sistemas distribuidos: centralizadas (cliente-servidor), descentralizadas (peer-to-peer), híbridas
  • Aprendizaje autónomo: Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
Objetivos: 1 2
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Seminario de laboratorio #1

Preparación del seminario con la ayuda del material de apoyo. Implementación y análisis del mecanismo pedido. Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
  • Laboratorio: Implementación y análisis del mecanismo pedido.
Objetivos: 1 2 3 13
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Lectura de artículo #1

Lectura del artículo propuesto. Comprensión y asimilación de los contenidos del artículo. Realización de un informe de la lectura
Objetivos: 1 2 3 13
Semana: 2
Tipo: examen de teoría
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Desarrollo del tema "Comunicación entre procesos"

Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
  • Teoría: Tipos de comunicación en un sistema distribuido: persistente vs. transitoria, síncrona vs. asíncrona. Invocación de procedimientos remotos (RPC): operación básica, paso de parámetros, extensiones del modelo básico, tratamiento de fallos, invocación de métodos remotos (RMI). Comunicación basada en mensajes: transitoria (Sockets) vs. persistente (MOM). Comunicación basada en streams: modos de transmisión, calidad de servicio
  • Aprendizaje autónomo: Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
Objetivos: 3
Contenidos:
Teoría
3h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Seminario de laboratorio #2

Preparación del seminario con la ayuda del material de apoyo. Implementación y análisis del mecanismo pedido. Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
  • Laboratorio: Implementación y análisis del mecanismo pedido.
Objetivos: 4 5 13
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Informe del seminario de laboratorio #1

Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
Objetivos: 1 2 3 13
Semana: 3
Tipo: examen de laboratorio
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h

Desarrollo del tema "Tiempo y ordenación"

Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
  • Teoría: Tiempo y la ordenación de eventos en un sistema distribuido. Relojes lógicos: relación happened-before, relojes lógicos de Lamport (escalares, vectoriales). Algoritmos para sincronizar relojes físicos en un sistema distribuido: Cristian (NTP), Berkeley.
  • Aprendizaje autónomo: Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
Objetivos: 4
Contenidos:
Teoría
1.5h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
1.5h

Lectura de artículo #2

Lectura del artículo propuesto. Comprensión y asimilación de los contenidos del artículo. Realización de un informe de la lectura
Objetivos: 4 13
Semana: 4
Tipo: examen de teoría
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Desarrollo del tema "Coordinación y consenso"

Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
  • Teoría: Coordinación de procesos en un sistema distribuido para garantizar exclusión mutua: algoritmos basados ​​en permiso (centralizado, descentralizado usando un sistema P2P, distribuido de Ricart y Agrawala usando multicast totalmente ordenado), algoritmos basados ​​en token (token ring). Coordinación de procesos en un sistema distribuido para la elección de líder: Bully, Ring. Coordinación de procesos en un sistema distribuido para la comunicación en grupo multicast: multicast fiable básico, multicast fiable escalable, multicast ordenado (FIFO, causal, total), atomic multicast.
  • Aprendizaje autónomo: Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
Objetivos: 5
Contenidos:
Teoría
3h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Seminario de laboratorio #3

Preparación del seminario con la ayuda del material de apoyo. Implementación y análisis del mecanismo pedido. Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
  • Laboratorio: Implementación y análisis del mecanismo pedido.
Objetivos: 5 6 13
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
6h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Informe del seminario de laboratorio #2

Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
Objetivos: 4 5 13
Semana: 5
Tipo: examen de laboratorio
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h

Lectura de artículo #3

Lectura del artículo propuesto. Comprensión y asimilación de los contenidos del artículo. Realización de un informe de la lectura
Objetivos: 5 6 13
Semana: 6
Tipo: examen de teoría
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Desarrollo del tema "Consistencia y replicación"

Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
  • Teoría: Replicación y consistencia en un sistema distribuido. Modelos de consistencia fuerte centrados en los datos: estricta, secuencial, causal, FIFO. Modelos de consistencia relajada centrados en los datos: uso de variables de sincronización. Modelos de consistencia centrados en el cliente: eventual, monotonic-read, monotonic-write, read-your-writes, writes-follow-reads. Ubicación de las réplicas (permanentes, iniciadas por el servidor, iniciadas por el cliente) y propagación de actualizaciones (push-pull protocols). Implementaciones de modelos de consistencia: protocolos basados ​​en primario (remote-write, local-write) y protocolos de escritura replicada (replicación activa, protocolos basados ​​en quórum)
  • Aprendizaje autónomo: Preparació de la classe amb l'ajuda del material de suport. Comprensió i assimilació dels continguts del tema per la seva aplicació posterior
Objetivos: 6
Contenidos:
Teoría
3h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Seminario de laboratorio #4

Preparación del seminario con la ayuda del material de apoyo. Implementación y análisis del mecanismo pedido. Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
  • Laboratorio: Implementación y análisis del mecanismo pedido.
Objetivos: 5 6 13
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
6h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Informe del seminario de laboratorio #3

Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
Objetivos: 5 6 13
Semana: 8
Tipo: examen de laboratorio
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Lectura de artículo #4

Lectura del artículo propuesto. Comprensión y asimilación de los contenidos del artículo. Realización de un informe de la lectura
Objetivos: 7 8 9 13
Semana: 8
Tipo: examen de teoría
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Desarrollo del tema "Sistemas de nombres"

Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
  • Teoría: Servicios de resolución de nombres planos: broadcasting, forwarding pointers, soluciones basadas en home, DHTs, soluciones jerárquicas. Servicios de resolución de nombres estructurados: name spaces, resolución iterativa, resolución recursiva, DNS. Servicios de resolución de nombres basados ​​en atributos: servicios de directorio (LDAP)
  • Aprendizaje autónomo: Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
Objetivos: 7
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Control parcial

Asimilación de los conceptos del curso y realización del control
Objetivos: 1 2 3 4 5 6 7
Semana: 10
Tipo: examen de teoría
Teoría
1.5h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
7.5h

Desarrollo del tema "Sistemas de ficheros distribuidos"

Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
  • Teoría: Arquitecturas de los sistemas de ficheros distribuidos: modelo de acceso remoto, modelo upload / download, idea básica de las arquitecturas en cluster (stripping + replicación). Semántica de compartición de ficheros: semántica UNIX, semántica de sesión, ficheros inmutables, semántica transaccional. Características básicas del sistema de ficheros distribuido CIFS/SMB
  • Aprendizaje autónomo: Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
Objetivos: 8
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Seminario de laboratorio #5

Preparación del seminario con la ayuda del material de apoyo. Implementación y análisis del mecanismo pedido. Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
  • Laboratorio: Implementación y análisis del mecanismo pedido.
Objetivos: 7 9 13
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Informe del seminario de laboratorio #4

Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
Objetivos: 5 6 13
Semana: 11
Tipo: examen de laboratorio
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Lectura de artículo #5

Lectura del artículo propuesto. Comprensión y asimilación de los contenidos del artículo. Realización de un informe de la lectura
Objetivos: 10 13
Semana: 11
Tipo: examen de teoría
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Desarrollo del tema "Sistemas distribuidos basados ​​en Web"

Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
  • Teoría: Arquitecturas de los sistemas distribuidos basados ​​en Web: cliente/servidor, servlets, clusters de servidores, Web Services. Protocolos de comunicación en los sistemas distribuidos basados ​​en Web: HTTP, SOAP, WSDL. Servicios de nombres en los sistemas distribuidos basados ​​en Web: URN, URL, DNS, UDDI. Sincronización en los sistemas distribuidos basados ​​en Web: WebDAV. Caching y replicación en los sistemas distribuidos basados ​​en Web: Proxies, Content Distribution Networks (CDN): Akamai, esquemas de redirección (URL rewriting, DNS redirection)
  • Aprendizaje autónomo: Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
Objetivos: 9
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Desarrollo del tema "Sistemas Peer-to-Peer (P2P)"

Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
  • Teoría: Modelo de computación Peer-to-Peer (P2P): ventajas y aplicaciones. Sistemas P2P no estructurados centralizados: BitTorrent. Sistemas P2P no estructurados descentralizados con búsqueda por inundación: Gnutella. Sistemas P2P estructurados basados ​​en DHTs: Chord: organización del anillo, inserción de elementos, búsqueda de elementos con tablas de finger, inserción de nodos.
  • Aprendizaje autónomo: Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
Objetivos: 10
Contenidos:
Teoría
3h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Seminario de laboratorio #6

Preparación del seminario con la ayuda del material de apoyo. Implementación y análisis del mecanismo pedido. Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
  • Laboratorio: Implementación y análisis del mecanismo pedido.
Objetivos: 10 13
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
6h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Informe del seminario de laboratorio #5

Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
Objetivos: 7 9 13
Semana: 13
Tipo: examen de laboratorio
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h

Desarrollo del tema "Sistemas de computación distribuida"

Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
  • Teoría: Paradigma de computación distribuida voluntaria: BOINC. Paradigma Grid de computación distribuida, sus características y sus aplicaciones: Virtual organizations (VO), diferencia respecto a la computación cluster y distribuida, arquitectura e implementación: OGSA, WSRF, GT. Paradigma Cloud de computación distribuida, sus características y sus aplicaciones: Utility computing, Service Level Agreements (SLA), tipo de Clouds (público, privado), diferencia respecto al Grid, servicios Cloud (IaaS, PAAS, SaaS) , arquitectura e implementación: virtualización, HDFS, Map-Reduce, infraestructura Cloud (datacenters), obstáculos para la consolidación del Cloud
  • Aprendizaje autónomo: Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
Objetivos: 11
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Lectura de artículo #6

Lectura del artículo propuesto. Comprensión y asimilación de los contenidos del artículo. Realización de un informe de la lectura
Objetivos: 11 12 13
Semana: 14
Tipo: examen de teoría
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Desarrollo del tema "Sistemas móviles y ubicuos"

Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
  • Teoría: Sistemas móviles y ubicuos: volatilidad, asociación, interoperabilidad, sensores y context-awareness, adaptación
  • Aprendizaje autónomo: Preparación de la clase con la ayuda del material de apoyo. Comprensión y asimilación de los contenidos del tema para su aplicación posterior
Objetivos: 12
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Informe del seminario de laboratorio #6

Preparación del seminario con la ayuda del material de apoyo. Implementación y análisis del mecanismo pedido. Realización de un informe del seminario explicando el trabajo realizado y las conclusiones extraídas
Objetivos: 10 13
Semana: 15
Tipo: examen de laboratorio
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Examen final

Asimilación de los conceptos del curso y realización del examen
Objetivos: 1 2 3 4 5 6 7 8 9 10 11 12
Semana: 15 (Fuera de horario lectivo)
Tipo: examen de teoría
Teoría
3h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
9h

Metodología docente

Durante el curso se realizarán dos tipos de actividades:

a) Actividades centradas en la adquisición de conocimientos teóricos.
b) Actividades centradas en la adquisición de conocimientos mediante experimentación con la implementación y evaluación empírica en el laboratorio de los mecanismos explicados a nivel teórico.

Las actividades teóricas incluyen clases expositivas participativas donde se explican los contenidos básicos del curso, además de la lectura de artículos/informes, ya sea como preparación de las clases expositivas o como posterior elaboración para facilitar la asimilación de los conceptos importantes. Con el objetivo de trabajar la competencia transversal, los artículos estarán escritos en Inglés.

Las actividades prácticas incluyen seminarios de laboratorio donde los alumnos implementan (en grupos de 2) los mecanismos descritos en las clases expositivas. Los seminarios requieren de una preparación previa mediante la lectura del enunciado y la documentación de apoyo, y una elaboración posterior de las conclusiones obtenidas en un informe. Con el objetivo de trabajar la competencia transversal, los enunciados de los seminarios estarán escritos en Inglés.

Método de evaluación

A) Examen parcial escrito individual.
B) Examen final escrito individual.
-- B1) Evaluación de los contenidos incluidos en el examen parcial, para los alumnos que no la aprobaron.
-- B2) Evaluación de los contenidos no incluidos en el examen parcial, para todos los alumnos.
C) Evaluación de los informes de lectura y discusión de artículos.
D) Evaluación de los seminarios de laboratorio.

Para los alumnos que tengan aprobado el examen parcial (A>=5) y no hagan la parte B1 del examen final, la nota final se calculará de la siguiente manera:

Nota Final = 0.25 x A + 0.25 x B2 + 0.2 x C + 0.3 x D

En caso contrario, la nota final se calculará como sigue:

Nota Final = 0.25 x B1 + 0.25 x B2 + 0.2 x C + 0.3 x D

La evaluación de la competencia transversal es realizará mediante la evaluación de las actividades C y D, que son las que tienen el material de apoyo escrito en Inglés.

Bibliografía

Básica:

Complementaria:

Capacidades previas

Los estudiantes requieren conocimientos previos de sistemas operativos (SO) y redes de computadores (XC)