Parte 2 do projeto: clarificações

3 dezembro 2020, 10:50 Fernando Ramos

Olá a todos.


Na aula prática de ontem chegámos à conclusão de que o objetivo do projeto é efetivamente implementar um protocolo gossip. Especificamente, a versão que garante coerência nas leitura do cliente. Além disso, o objetivo é correrem sempre 3 réplicas dos servidores.

Deixo aqui a mensagem para os alunos que não foram à aula.

Aproveito para clarificar um ponto que na conversa com alguns colegas não ficou claro, por minha culpa, e que poderá ter induzido em erro um detalhe do gossip. Este protocolo tem muitas variantes, podendo oferecer coerência causal (de vários tipos -- como este que estão a implementar), coerência mais fraca (nenhuma garantia de causalidade), ou coerência forte (com ordem total, tal como o RAFT). Dependendo da variante, o número de réplicas necessário para tolerar f faltas varia. Nas versões mais básicas (tal como a que estão a implementar) apenas são necessárias f+1 réplicas. No entanto, é muito comum usarem-se 3 réplicas, portanto na realidade a vossa implementação vai tolerar f=2 faltas (a alguns grupos falei em f=1 faltas, por causa do que se segue, e foi essa a minha incorreção). Quando temos a versão que garante ordem total dos updates isso implica resolver um problema de consenso, e nesse caso é efetivamente necessário termos 2f+1 réplicas.

Espero que tenha ficado esclarecido. De qualquer modo na próxima aula posso tentar explicar melhor pessoalmente. Mas termino com o mais importante: para o projeto devem correr 3 réplicas do servidor, mas só precisam de testar com 1 falta.

Bom trabalho.

Fernando