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 - 52

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 8 valoes. A nota de frequência é calculada da seguinte forma:

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

A nota do trabalho prático será obtido pela avaliação do trabalho efectuado, ponderado pela nota do teste prático, a realizar no dia do teste.

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,0 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. Segurança
6.1 Técnicas criptográficas
6.2 Autenticação, certificados e canais seguros
6.3 TLS e O.Auth

7. Tempo e ordenação de eventos
7.1 Relógios físicos
7.2 Relógios lógicos, vetoriais e vetores versão

8. Replicação e consistência
8.1 Caching
8.2 Replicação forte e fraca

9. Comunicação indireta
9.1 Comunicação em grupo
9.2 Sistemas publish/subscribe e message queues
9.3 Tolerância a falhas 

10. Nomes
10.1 Conceitos
10.2 Serviços de nomes e doretório

Cursos

Cursos onde a unidade curricular é leccionada: