
Sistemas Distribuídos
Código
8153
Unidade Orgânica
Faculdade de Ciências e Tecnologia
Departamento
Departamento de Informática
Créditos
6.0
Professor responsável
Nuno Manuel Ribeiro Preguiça, Sérgio Marco Duarte
Horas semanais
5
Total de horas
52
Língua de ensino
Português
Objectivos
Esta é uma UC de consolidação, opcional, em sistemas distribuídos. Esta UC introduz os modelos, métodos e técnicas básicas para o desenvolvimento de sistemas distribuídos. Como pré-requisito, os estudantes devem possuir conhecimentos de algoritmos, programação e redes de computadores.
Conhecimentos
- Problemas e desafios para o desenho de sistemas distribuídos;
- Modelos arquitecturais para a construção de sistemas distribuídos;
- Modelos e sistemas de comunicação directa e indirecta;
- Alternativas para a nomeação, incluindo serviços de nomes e directório;
- Soluções fundamentais de ordenação e registo de causalidade de eventos;
- Modelos de consistência básicos e soluções de caching e replicação.
Aptidões e competências
- Desenhar um sistema distribuídos para um problema não trivial;
- Utilização de subsistemas de comunicação standard para a programação de sistemas distribuídos;
- Implementação de sistemas distribuídos não triviais.
Pré-requisitos
Para seguir esta cadeira os estudantes devem possuir conhecimentos de algoritmos, programação e redes de computadores.
Bons conhecimentos de programação em Java são essenciais.
Conteúdo
1. Introduction
1.1 Examples, characteristics, challenges
2. Direct communication
2.1 Point-to-point communication
2.2 Multicast
3. Remote invocation
3.1 Model
3.2 Interfaces and data representation
3.3 Protocols and semantics in the presence of faults
3.4 Binding and concurrency in the server
4. Remote invocation in the Internet
4.1 Web-services
4.2 REST
4.3 Asynchronous invocation (e.g. AJAX) and push models
5. Indirect communication
5.1 Group communication
5.2 Publish/subscribe
5.3 Message queues
6. Architectures and models
6.1 Architectures: client/server variants, p2p, proxy
6.2 Fault, interaction and security models
7 Security
7.1 Models
7.2 Cryptography
7.3 Case studies: TLS, OAuth
8. Time
8.1 Physical clocks
8.2 Logical clocks
8.3 Vector clocks
8.4 Version vectors
9. Introduction to replication and consistency
9.1 Caching
9.2 Primary/backup replication
10. Naming in distributed systems
10.1 Problems and concepts
10.2 Name services
10.3 Directory services
Bibliografia
Distributed Systems: Concepts and Design
George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair
Publisher: Addison Wesley; 5th edition
ISBN-13: 978-0132143011
Método de ensino
São ministradas aulas teóricas onde são transmitidos e discutidos os conceitos fundamentais.
Nas aulas práticas é feita uma apresentação de algumas técnicas básicas de sistemas distribuídos (ver programa das aulas práticas) e realizados alguns exercícios básicos relacionados. Algumas aulas práticas são dedicadas exclusivamente aos trabalhos práticos a realizar pelos alunos, incluindo a apresentação e discussão de possíveis soluções.
Método de avaliação
Avaliação
Componentes
- téorica (65%) >= 9.5 valores em 20
- teste 1 (32.5%), teste 2 (32.5%)
- ou, exame (65%)
- frequência (35%) >= 9.5 valores em 20
- decorrente da discussão individual dos trabalhos: TP1 (17.5%), TP2 (17.5%)
- a nota da discussão individual de cada trabalho será menor ou igual que nota do trabalho de grupo correspondente
Observações
-
todas as notas intermédias são aproximadas às décimas
- as frequências obtidas em 2017/18 e 2016/17 são válidas e usadas no cálculo da nota final, (mesmo que inferiores a 9.5). Em caso de repetição da frequência, será considerada a melhor das classificações obtidas.
-
os testes, exames e discussões individuais são realizados sem consulta.
-
os trabalhos práticos são realizados em grupos de 2 alunos, no máximo.
-
da falta injustificada à discussão individual decorre a perda de frequência.