Sistemas Distribuídos
Objetivos
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.
Caracterização geral
Código
8153
Créditos
6.0
Professor responsável
Nuno Manuel Ribeiro Preguiça
Horas
Semanais - 5
Totais - 65
Idioma de ensino
Português
Pré-requisitos
Como pré-requisito, os estudantes devem possuir conhecimentos de algoritmos, programação e redes de computadores.
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
Nas aulas teóricas expõe-se e discute-se o programa da UC, apresentando os problemas e discutindo as respectivas soluções recorrendo a exemplos concretos da utilização de sistemas distribuídos.
As aulas práticas acompanham os dois trabalhos da UC, fornecendo aos alunos experiência no desenvolvimento de sistemas distribuídos seguros usando as técnicas estudadas. Os dois trabalhos são constituídos por uma sequência de passos que seguem a matéria abordada. Nas aulas práticas apresentam-se exemplos e inicia-se a resolução dos vários passos dos trabalhos, e presta-se apoio à sua realização.
Método de avaliação
Método de avaliação dos alunos
Componentes da avaliação
- Dois testes, com o peso na nota final de 30% cada um.
- Dois trabalhos práticos, com peso na nota final de 20% cada um.
Notas a ter em atenção
- A nota final é aproximada ao valor, as notas intermédias à décima de valor.
- Os testes são realizados sem consulta.
- Ter êxito na frequência é condição necessária para aceder ao exame de recurso.
Avaliação da frequência
Têm frequência os alunos cuja nota de frequência seja igual ou superior a 9,0 valoes. A nota de frequência é calculada da seguinte forma:
- Nota de frequência = 50% * trab 1 + 50% * trab 2
A nota dos trabalhos práticos poderá ainda incluir uma discussão sobre o mesmo. Os alunos que, sem justificação, não compareçam a uma discussão não têm frequência.
A frequência de anos anteriores é válida este ano.
Nota final
Para os alunos com frequência, a nota final será calculada da seguinte forma:
- Nota final = 30% * teste 1 + 30% * teste 2 + 20% * trab 1 + 20% * trab 2
Para os alunos que vão a exame, a nota final será calculada da seguinte forma:
- Nota final = 60% * exame + 20% * trab 1 + 20% * trab 2
- Nota final = MAX( 30% * teste 1 + 30% * teste 2, 60% * exame) + 20% * trab 1 + 20% * trab 2
Condições de aprovação na cadeira
1. Trabalho prático válido;
2. Avaliação de frequência superior ou igual a 9,0 valores;
3. Média(teste 1, teste 2) >= 9,0 ou exame >= 9,0;
4. Nota final superior ou igual a 9,5 valores.
Conteúdo
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
Cursos
Cursos onde a unidade curricular é leccionada: