Sistemas Distribuídos (2021/2022) - 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. Introdução à avaliação de SD
6.1 Avaliação funcional e de carga

7. Segurança
7.1 Técnicas criptográficas
7.2 Autenticação, certificados e canais seguros
7.3 TLS e O.Auth

8. Tempo e ordenação de eventos
8.1 Relógios físicos
8.2 Relógios lógicos, vetoriais e vetores versão

9. Replicação e consistência
9.1 Caching
8.2 Replicação forte e fraca

10. Comunicação indireta
10.1 Comunicação em grupo
10.2 Sistemas publish/subscribe e message queues
10.3 Tolerância a falhas

10. Nomes
10.1 Conceitos
10.2 Serviços de nomes e diretó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   39.0
Avaliação   6.0
Estudo   48.0
Projectos e trabalhos   49.0
Total de Horas 168
ECTS 6.0