Grado en International Computer Engineering La Salle Campus Barcelona

Grado en International Computer Engineering

El Grado en Ingeniería Informática de La Salle es el único programa de grado en Barcelona que te proporcionará las habilidades y el conocimiento para dar respuesta a las necesidades internacionales del sector de la informática y de los negocios.

Proyectos en arquitectura distribuida

Descripción: 

Esta asignatura revisa la teoría fundamental de los sistemas distribuidos y analiza las principales soluciones modernas en este campo. Empieza identificando los problemas asociados a compartir datos entre varias máquinas físicas, describiendo cómo se puede moldear un sistema distribuido, discutiendo las técnicas para sincronizar varios nodos comunicados por una red, estudiando qué técnicas se pueden utilizar para replicar datos, así como sus ventajas y desventajas, y termina analizando los sistemas distribuidos modernos altamente escalables.

Tipo asignatura
Obligatoria no de Primer
Semestre
Primero
Curso
4
Créditos
4.00

Profesores Titulares

Profesores Docentes

Conocimientos previos: 

  • Conocimientos de programación orientada a objetos.
  • Conocimiento del funcionamiento interno de un sistema operativo.
  • Conocimientos de exclusión mutua y algoritmos.

Objetivos: 

La asignatura tiene los siguientes objetivos:

  1. Identificar las principales características de un sistema distribuido.
  2. Comprender un artículo científico sobre sistemas distribuidos.
  3. Asimilar las principales técnicas utilizadas en sistemas distribuidos.
  4. Comprender los algoritmos que conducen al diseño de sistemas distribuidos escalables.

Contenidos: 

  1. Introducción a los sistemas distribuidos y sus fundamentos.
  2. Arquitecturas de res compartido vs. memoria compartida: programación multihilo y aplicaciones distribuidas.
  3. Modelos y relojes: relojes lógicos, relojes de dependencia directa y relojes vectoriales.
  4. El problema de la exclusión mutua en arquitecturas distribuidas: algoritmo basado en tokens, algoritmo de horno de Lamport y algoritmo de Ricart y Agrawala.
  5. Primitivas y estrategias de comunicación: paso de mensajes y RPC, y gRPC y codificación binaria con buffers de protocolo.
  6. Técnicas de replicación de datos: replicación impaciente, replicación perezosa, copia primaria, actualización en todas partes y teorema CAP.
  7. Modelos de fallos: bizantino y bloqueo/paro.
  8. Tolerancia a fallos y políticas de recuperación: elección de líder - Raft
  9. Hashing consistente.
  10. Retos modernos - lectura de papel.

Metodología: 

Ésta es una asignatura eminentemente práctica que combina contenidos teóricos y clases magistrales con ejercicios o microtareas destinadas a consolidar los conocimientos adquiridos por los estudiantes, por lo que la asignatura se imparte íntegramente en el laboratorio.

Evaluación: 

Todos los ejercicios propuestos, sin excepción, deben entregarse y aprobarse para poder aprobar la asignatura. La participación activa en las discusiones de clase y la respuesta a preguntas durante las clases magistrales contribuirán con un 5% a la nota final. La asistencia regular y la participación son esenciales para la superación de ese componente.

Si los ejercicios se entregan antes de la fecha del examen de la evaluación ordinaria y se superan las entrevistas correspondientes, no será necesario aprobar ningún examen. La nota final se calcula mediante la siguiente fórmula:

Nota final de la asignatura = 95% Media de ejercicios + 5% asistencia

En caso contrario, será necesario aprobar un examen final. Cuando todos los ejercicios estén aprobados y el examen tenga una puntuación igual o superior a 4, la nota final se calculará como:

Nota final de la asignatura = 55% Examen + 40% Media de ejercicios + 5% asistencia.

Criterios evaluación: 

Se evaluarán los siguientes aspectos:

  • Trabajos prácticos: La capacidad de diseñar sistemas distribuidos escalables y aplicar correctamente las principales técnicas utilizadas en arquitecturas distribuidas dentro de un entorno práctico de laboratorio.
  • Lectura de papers: La capacidad de comprender y analizar un artículo científico sobre los retos modernos en sistemas distribuidos.
  • Examen final: La asimilación y correcta identificación de las principales características, la teoría fundamental y los modelos de un sistema distribuido.

Bibliografía básica: 

  • Vijay K. Garg. 2007. Concurrent and Distributed Computing in Java. IEEE Press, Piscataway, NJ, USA.
  • Patrick Hunt, Mahadev Konar, Flavio Paiva Junqueira, Benjamin Reed: ZooKeeper: Wait-free Coordination for Internet-scale Systems. USENIX Annual Technical Conference 2010.
  • Fernando Pedone, Matthias Wiesmann, André Schiper, Bettina Kemme, Gustavo Alonso: Understanding Replication in Databases and Distributed Systems. ICDCS 2000: 464-474.
  • Leslie Lamport: The Part-Time Parliament. ACM Trans. Comput. Syst. 16(2): 133-169 (1998).
  • James C. Corbett et al.: Spanner: Google's Globally Distributed Database. ACM Trans. Comput. Syst. 31(3): 8 (2013).
  • Giuseppe DeCandia et al.: Dynamo: Amazon's highly available key-value store. SOSP 2007: 205-220.
  • Tom White: Hadoop The Definitive Guide: Storage and Analysis at Internet Scale (4. ed., revised & updated). O'Reilly 2015, ISBN 978-1-491-90163-2, pp. I-XXV, 1-727.

Material complementario: 

-