Tolerância a Faltas Distribuída
Ano Letivo: 2015/16
Departamento: Informática
Carga horária: T: 2:00 h; TP: 1:30 h; OT: 2:00 h;
Área Científica: Informática;
Objetivos da Unidade Curricular
A utilização crescente de sistemas distribuídos numa grande diversidade de aplicações levanta dois problemas: i) o número crescente de componentes dos sistemas levanta preocupações sobre a sua fiabilidade; ii) a distribuição geográfica levanta possibilidades interessantes de replicação por diversos servidores. A unidade curricular introduz o conceito de tolerância a faltas distribuída, que faz uso de diferentes processos interligados para replicar componentes de software de uma forma mais económica e flexível do que utilizando equipamento dedicado. A unidade curricular aborda conceitos, metodologias e mecanismos para a construção de sistemas em rede fiáveis.
Pré-requisitos
Sem pré-requisitosConteúdos
Abstracções básicas de sistemas distribuídos. Modelos de sistemas distribuídos. Algoritmos de difusão. Algoritmos de memória partilhada. Acordo distribuído. Aplicações de acordo distribuído.
Descrição detalhada dos conteúdos programáticos
Componente Teórica
1- Sistemas distribuídos e tolerância a faltas: Paradigmas básicos de sistemas distribuídos; Características de sistemas distribuídos; Evolução dos sistemas distribuídos; Medidas de confiabilidade; Classificação de faltas; Propriedades da confiabilidade; Mecanismos de tolerância a faltas.
2- Modelos de sistemas distribuídos.
3- Algoritmos de difusão e problemas relacionados: Difusão melhor-esforço, fiável com e sem uniformidade no modelo de falha por paragem. Ordenação FIFO, causal e total de mensagens. Problema do acordo distribuído.
4- Deteção de falhas: Mecanismos; Propriedades de detetores de falhas; Acordo distribuído com detetores de falhas.
5- Replicação: Gestão da replicação em sistemas não particionáveis e particionáveis; Replicação de máquina de estados; Paxos.
6- Comunicação em grupo: Conceitos; Gestão de vistas; Sincronia de vistas; Aspetos de segurança.
7- Transações: Modelo transacional; Recuperação; Checkpointing.
8- Memória partilhada: Registos atómicos; Sincronização por memória partilhada; Coordenação; Espaços de tuplos.
9- Computação e armazenamento em larga escala.
Componente Teórica-Prática
Desenvolvimento de aplicações tolerantes a faltas. Aplicações práticas e desenvolvimento de variantes dos algoritmos estudados nas aulas teóricas.
Bibliografia
Recomendada
P. Veríssimo, L. Rodrigues. Distributed Systems for System Architects. Kluwer. Part 1 (Distributed systems) and Part 2 (Fault-tolerance)
C. Cachin, R. Guerraoui, L. Rodrigues. Reliable and Secure Distributed Programming. (2nd edition). Springer. 2011
Outros elementos de estudo
Artigos sobre várias partes da matéria, disponibilizados aos alunos e acessíveis através ba biblioteca B-On.
Métodos de Ensino
As aulas teóricas tentam estimular o envolvimento dos alunos, constriuindo colaborativamente algoritmos que resolvem os problemas levantados no início da aula. Nas aulas práticas os estudantes são convidados a resolver individualmente os problemas apresentados no início da aula e a discutir as suas resoluções com os colegas.
Métodos de Avaliação
Exame final que avalia a componente teórica. Provas escritas curtas, ao longo do semestre. Trabalhos de análise de artigos e apresentações. Desenvolvimento de uma aplicação tolerante a faltas.
Língua de ensino
A unidade curricular é leccionada em Inglês caso estejam inscritos alunos que não dominem a língua portuguesa. Caso contrário é leccionado em português