Objetivos | A relevância da distribuição na confiabilidade de sistemas informáticos deverá tornar-se evidente para os alunos após a introdução dos fundamentos de tolerância a faltas, diversos conceitos como falta, erro e falha, métricas de confiabilidade e metodologias de tratamento de erros, e o estudo dos vários modelos de faltas da literatura. Os desafios centrais à conceção de sistemas confiáveis, tolerantes a faltas, serão apresentados com base no problema fundamental de consensos distribuído e tolerante a faltas em vários modelos de faltas. Diversas abordagens algoritmicas serão estudadas. O estudo da replicação com coerência forte na presença de faltas por omissão e da replicação de transações em sistemas abertos na presença de faltas bizantinas apetrechará os alunos com os conhecimentos necessários para planear, implementar e avaliar sistemas distribuídos que resolvem problemas de escala e confiabilidade. |
Programa | 1. Fundamentos de tolerância a faltas: conceitos e modelos. 2. Acordo em sistemas distribuídos (consenso): impossibilidade, deteção de faltas, algoritmos. 3. Replicação com coerência forte. Caso de estudo: replicação de sistemas de bases de dados. 4. Tolerância a faltas bizantinas: algoritmos e aplicações. Caso de estudo: blockchain. |
Bibliografia | Introduction to Reliable and Secure Distributed Programming. Christian Cachin, Rachid Guerraoui, Luís Rodrigues, Springer. Fault-Tolerant Message-Passing Distributed Systems: An Algorithmic Approach. Michel Raynal, Springer. Replication: theory and practice, B. Charron-Bost, F. Pedone, A. Schiper (Eds), Springer. Distributed Systems for System Architects, Paulo Veríssimo, Luís Rodrigues, Kluwer Academic. Reliable Distributed Systems, Kenneth Birman, Springer. |
Resultados da aprendizagem | - Explicar a relevância da distribuição na confiabilidade de sistemas informáticos. - Caracterizar desafios em sistemas distribuídos em termos de problemas e modelos abstratos. - Discutir o papel de algoritmos distribuídos (e.g. consenso) na solução de problemas de confiabilidade. - Implementar sistemas distribuídos que resolvem problemas de escala e confiabilidade. - Avaliar sistemas distribuídos que resolvem problemas de escala e confiabilidade. |