Sistemas Distribuídos
Código
0106026Créditos ECTS
6Objetivos
Pretende-se que os formandos adquiram conhecimento sobre o que é um sistema distribuído e quais as principais questões que resultam da sua utilização. Pretende-se proporcionar os conhecimentos básicos e intermédios para a programação de aplicações distribuídas, nomeadamente as arquiteturas e as tecnologias de comunicação em sistemas distribuídos, usando as competências adquiridas para a programação em Python.
Programa
1. Arquiteturas de sistemas distribuídos: monolíticas, N camadas; Peer-to-Peer; publicador-subscritor; objetos distribuídos; Web Services.
2. Processos: programação com processos e threads de sistemas distribuídos; cloud.
3. Comunicações: fundamentos; RPC; orientada a mensagens; multicast.
4. Sistema de nomes: nomes sem estrutura e estruturados; nomes baseados em atributos; arquiteturas e algoritmos de pesquisa.
5. Coordenação: relógios físicos; relógios lógicos; exclusão mútua; algoritmos de eleição; sistemas de localização.
6. Consistência e Replicação: modelos de consistência baseado em dados.
Métodos de Ensino
As aulas estão divididas em teóricas e práticas. Nas primeiras, é proporcionada a exposição dos conceitos, que incluí também a demonstração de programas, e, nas segundas, é proporcionada a resolução de fichas laboratoriais, para exercitar e complementar os conceitos, e a programação de aplicações de pequena escala para sistemas distribuídos.
Bibliografia
Referências principais
- Maarten Steen e Andrew Tanenbaum. Distributed Systems: Principles and Paradigms. 3ª edição. Published by Maarten Steen. 2017. ISBN-13: 978-15-430573-8-6 (versão impressa); ISBN-13: 978-90-815406-2-9 (versão digital).
- Mark Summerfield. Programming in Python 3: A Complete Introduction to the Python Language. 2ª edição. Addison-Wesley. 2010. ISBN-13: 978-0-321-68056-1.
Outras referências
- George Coulouris, Jean Dollimore e Tim Kindberg. Distributed Systems: Concepts and Design. 5ª edição. Addison-Wesley. 2012. ISBN-13: 978-0-273-76059-7.
- Documentação de Python.
- Documentação de Python específica sobre programação de socket.