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.
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.
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
Distributed Systems: Concepts and Design
George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair
Publisher: Addison Wesley; 5th edition
ISBN-13: 978-0132143011
Como pré-requisito, os estudantes devem possuir conhecimentos de algoritmos, programação e redes de computadores.
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 |