Grado en diseño y creación de productos interactivos La Salle Campus Barcelona

Grado en Diseño y Creación de Productos Interactivos - Mención en Diseño y Desarrollo de Videojuegos

Proyectos en arquitectura distribuida

Descripción
Esta asignatura revisa la teoría fundamental de sistemas distribuidos y analiza las principales soluciones modernas en este campo. Se comienza identificando la problemática asociada a compartir un dato entre varias máquinas físicas, se ve cómo se puede modelar un sistema distribuido, se estudian técnicas para sincronizar varios nodos comunicados por una red, qué técnicas se pueden utilizar para replicar datos, así como sus ventajas e inconvenientes, y se acaban analizando los sistemas distribuidos actuales altamente escalables.
Tipo asignatura
Optativa
Semestre
Primero
Créditos
4.00

Profesores Titulares

Conocimientos previos

Se recomienda que el alumno tenga conocimientos previos de programación en Java i se desarrolle correctamente en el lenguaje de modelado UML.

Objetivos

La asignatura tiene los siguientes objetivos:
1. Identificar las características principales de un sistema distribuido.
2. Entender un artículo de carácter científico sobre sistemas distribuidos.
3. Asimilar las principales técnicas utilizadas en sistemas distribuidos.
4. Diseñar sistemas distribuidos escalables.

RA.01 - Conceptos avanzados de bases de datos, seguridad, concurrencia y transacciones. (GI)
RA.02 - Se puede construir aplicaciones informáticas basadas en arquitecturas cliente/servidor y web. (GI)

Contenidos

1. Fundamentos de sistemas distribuidos.
2. Arquitecturas shared-nothing vs shared memory.
3. El problema de la exclusión mutua en arquitecturas distribuidas.
4. Modelos y clocks.
5. Estrategias y primitivas de comunicación.
6. Técnicas para la replicación de datos.
7. Tolerancia a fallos y recuperación.
8. Modelos de referencia.
9. Alternativas actuales.

Metodología

Esta es una asignatura eminentemente práctica que combina contenidos y explicaciones de carácter teórico con ejercicios o micro-prácticas destinadas a consolidar los conocimientos adquiridos por el alumnado, por lo tanto, la asignatura se imparte íntegramente en el laboratorio.

Evaluación

Todos los ejercicios propuestos, sin excepción, deberán entregar y aprobar para poder superar la asignatura. Si estos ejercicios se entregan antes de la fecha del examen de la convocatoria ordinaria y se superan las entrevistas correspondientes, la nota final de la asignatura será la media de la nota obtenida en los ejercicios. De lo contrario, habrá que resolver un examen final. Entonces, cuando todos los ejercicios estén aprobados y el examen tenga una nota igual o superior a 4 (cuatro), la nota final se calculará como:

Nota asignatura = 60% Examen + 40% Media ejercicios

Las notas de todas las entregas y exámenes se guardan hasta la convocatoria extraordinaria de febrero.

Las copias totales o parciales en cualquier actividad evaluable, se penalizarán con el que esta establecido en la normativa académica, tanto en la fuente como la copia sin excepción.

Criterios evaluación
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-727or other bibliographic format>

Material complementario