Sistemas Distribuídos (2019/2020) - Departamento de Informática
Descrição

Esta é uma UC obrigatória de sistemas distribuídos (SD). Esta UC introduz os modelos, métodos e técnicas básicas para o desenvolvimento de SD seguros e tolerantes a falhas.

Nas aulas práticas os estudantes colocam em prática as técnicas abordadas na cadeira desenvolvendo um sistema distribuído de média complexidade.

Objectivos

Esta é uma UC obrigatória de sistemas distribuídos (SD). Esta UC introduz os modelos, métodos e técnicas básicas para o desenvolvimento de SD seguros e tolerantes a falhas. Como pré-requisito, os estudantes devem possuir conhecimentos de algoritmos, programação e redes de computadores.

Conhecimentos

* Conhecer os problemas e desafios inerentes ao desenho de SD;
* Compreender as arquiteturas de SD;
* Conhecer os modelos e sistemas de comunicação direta e indireta;
* Compreender os algoritmos para estabelecimento de canais seguros;
* Conhecer as alternativas para a nomeação, incluindo serviços de nomes e diretório;
* Compreender os mecanismos de ordenação e registo de causalidade de eventos;
* Compreender os algoritmos de caching e replicação de dados e modelos de consistência associados.

Aptidões e competências

* Desenhar e implementar um SD seguro para um problema não trivial;
* Utilizar sistemas de comunicação normalizados para a programação de SD;
* Utilizar replicação para melhorar desempenho e tolerar falhas.


Programa
1. Introdução 2. Arquiteturas e modelos 2.1 Arquiteturas: cliente/servidor, p2p e variantes 2.2 Modelos de sistema 3. Comunicação direta 3.1 Sistemas base: TCP, UDP, IP multicast, HTTP 3.2 Sistemas assíncronos: HTTP assíncrono, web sockets 4. Invocação remota 4.1 Modelo 4.2 Interfaces e representação de dados 4.3 Protocolos 4.4 Ligação e concorrência no servidor 5. Interação cliente/servidor na web 5.1 SOAP 5.2 REST 6. Segurança 6.1 Técnicas criptográficas 6.2 Autenticação, certificados e canais seguros 6.3 TLS e O.Auth 7. Tempo e ordenação de eventos 7.1 Relógios físicos 7.2 Relógios lógicos, vetoriais e vetores versão 8. Replicação e consistência 8.1 Caching 8.2 Replicação forte e fraca 9. Comunicação indireta 9.1 Comunicação em grupo 9.2 Sistemas publish/subscribe e message queues 9.3 Tolerância a falhas 10. Nomes 10.1 Conceitos 10.2 Serviços de nomes e doretório
Bibliografia Principal

Distributed Systems: Concepts and Design

George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair

Publisher: Addison Wesley; 5th edition

ISBN-13: 978-0132143011

Requisitos Prévios

Como pré-requisito, os estudantes devem possuir conhecimentos de algoritmos, programação e redes de computadores.

Esforço do Aluno
  Horas por crédito 28
  Horas p/ semana Semanas Horas
Aulas práticas e laboratoriais   26.0
Aulas teóricas   26.0
Avaliação   6.0
Estudo   54.0
Projectos e trabalhos   56.0
Total de Horas 168
ECTS 6.0