Sistemas Distribuídos

Objectivos

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.
  • Os testes/exames serão presenciais, se tal for possível. Caso os testes/exames sejam efetuados online, serão usadas as ferramentes de proctoring disponibilizadas pela FCT (Respondus).
  • 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 8,5 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
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) + 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 8,5 valores;

3. Média(teste 1, teste 2) >= 8.5 ou exame >= 8.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: