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

João Carlos Antunes Leitão, 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, cada um com peso de 30% na nota final.
  • Um trabalho prático, dividido em duas fases, cada uma com peso de 20% na nota final.

Notas a Ter em Atenção

  • A nota final é arredondada ao valor inteiro, enquanto as notas intermédias são arredondadas à décima.
  • Os testes são realizados sem consulta.
  • Ter êxito na frequência é uma condição necessária para aceder ao exame de recurso.

Avaliação da Frequência

Os alunos cuja nota de frequência seja igual ou superior a 9,0 valores são considerados como tendo frequência. A nota é calculada da seguinte forma:

  • Nota de frequência base = 50% * trab - fase 1 + 50% * trab - fase 2

Haverá uma discussão obrigatória (para aferir o conhecimento de cada aluno sobre o trabalho realizado), que será realizada presencialmente e de forma individual. A discussão consiste em fazer modificações ao código para resolver uma variante do problema original, conforme definido no enunciado da discussão.

Os critérios de avaliação da discussão são os seguintes:

  • 20: As alterações estão globalmente corretas.
  • 16: As alterações estão confusas ou muito incompletas, mas o caminho poderia ser aquele.
  • 12: As alterações contêm tanto elementos corretos como incorretos.
  • 4: Não foram feitas alterações, as modificações foram mínimas ou as alterações realizadas não fazem sentido.

Regra geral, a nota de frequência de um aluno é o mínimo entre a nota de frequência base (baseada no trabalho entregue em grupo) e a nota da discussão (que será zero caso o aluno falte sem justificação):

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

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

Nota sobre o uso de ferramentas de IA generativa: O uso destas ferramentas para geração de código repetitivo é permitido, mas deve ser reportado na entrega do trabalho.

Nota Final

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

  • Nota final = 30% * Teste 1 + 30% * Teste 2 + 40% * Nota de Frequência

Para os alunos com frequência que realizam o exame, a nota final é calculada da seguinte forma:

  • Nota final = 60% * Exame + 40% * Nota de Frequência
Para os alunos que pretendem fazer melhoria, a nota final é calculada da seguinte forma:
  • Nota final = MAX(30% * Teste 1 + 30% * Teste 2, 60% * Exame) + 40% * Nota de Frequência

Para os alunos cuja média dos testes ou a nota do exame seja inferior a 9,5, a nota final será igual a esse valor.

Condições de Aprovação na Cadeira

Para obter aprovação na disciplina, os alunos devem cumprir as seguintes condições:

1. Entrega de um trabalho prático válido.

2. Nota de frequência igual ou superior a 9,0 valores.

3. Média(Teste 1, Teste 2) >= 9,5 ou Exame >= 9,5.

4. Nota final igual ou superior a 9,5 valores.

Durante uma prova de avaliação, um estudante não pode ter junto a si dispositivos electrónicos com capacidade de acesso à internet ou ligação bluetooth (e.g. smartphones, smartwatches, smartglasses, tablets, laptops, etc), ainda que desligados.A violação desta regra implica a reprovação liminar na unidade curricular por exclusão e será comunicada à Comissão Científica do respectivo Curso.

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: