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

M. van Steen and A.S. Tanenbaum, Distributed Systems, 4th ed., distributed-systems.net, 2023. https://www.distributed-systems.net/index.php/books/ds4/

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.
  • Um trabalho prático, com duas fases, 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 base = 50% * trab - fase 1 + 50% * trab - fase 2

Haverá uma discussão (para aferir o conhecimento que cada aluno tem sobre o trabalho realizado) que é obrigatória, presencial e individual. A discussão do trabalho consiste em fazer alterações ao código para que o novo programa resolva uma variante do problema original, definida no enunciado da discussão, que difere pouco do trabalho realizado. As notas das discussões e os respetivos critérios são os seguintes:

  • 20: as alterações estão globalmente certa;
  • 16: as alterações estão confusas ou muito incompleta, mas o caminho poderia ser aquele;
  • 12: as alterações não estão certas, havendo "algumas coisas bem e outras muito mal";
  • 4: não foi feita qualquer alteração ou as alterações feitas são ínfimas ou as alterações feitas não fazem sentido.

Regra geral, a nota de frequência de um aluno é o mínimo entre da nota de frequência base, com base na nota das duas fases do trabalho que entregou (realizados em grupo), e a sua nota na discussão (que é zero, se o aluno faltou sem justificação), i.e.,

  • Nota de frequência = min( nota de frequência base, nota de discussão)

A frequência de anos anteriores é válida este ano.

Nota sobre a utilização de ferramentas de IA generativo: a utilização destas ferramentas na realização do trabalho é permitida, mas a mesma deve ser reportada aquando da entrega do trabalho.

Nota final

Para os alunos com frequência, a nota final será calculada da seguinte forma:

  • Nota final = 30% * teste 1 + 30% * teste 2 + 40% * nota de frequência

Para os alunos com frequência que vão a exame, a nota final será calculada da seguinte forma:

  • Nota final = 60% * exame + 40% * nota de frequência
Para os alunos que pretendem fazer melhoria, a nota final será calculada da seguinte forma:
  • Nota final = MAX( 30% * teste 1 + 30% * teste 2, 60% * exame) + 40% * nota de frequência

Para os alunos cuja nota média dos testes ou a nota do exame seja menor que 9,5, a nota final será igual a esta nota.

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,5 ou exame >= 9,5;

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: