TOLERÂNCIA A FALTAS DISTRIBUÍDA
Licenciatura e Pós-Graduação em Informática,
2004/2005 - 1 Semestre


Trabalho prático

Nota prévia: Este enunciado pode ser refinado, com vista a esclarecer enventuais dúvidas que apareçam durante a sua concretização.

Para concretizar o trabalho, os alunos devem utilizar o sistema Appia Appia. Este sistema fornece serviços de filiação e comunicação em grupo com diferentes propriedades e tipos de ordenação.

O trabalho consiste em concretizar um servidor replicado. Para simplificar o trabalho, o servidor mantém apenas um conjunto de registos. Cada registo armazena um inteiro.

A interface de acesso ao servidor deve apenas suportar duas operações, nomeadamente:

em que index indentifica qual o registo em que se faz a leitura escrita.

O servidor pode funcionar em dois modos, a saber:

No primeiro modo, a diferença de tempo que pode existir entre a actualização das várias réplicas pode ser visível para os clientes. Isto é, um cliente pode ler um valor e de seguida, outro cliente, porque contacta outra réplica, ler ainda o valor anterior.

No segundo modo, as actualizações devem aparentar ser atómicas. Ou seja, se um clinte vê uma actualização, qualquer cliente que leia esse registo no futuro deve ver essa actualização.

Os alunos devem assumir que existem muito mais operações de leitura do que de escrita, e devem conceber o sistema para optimizar ao máximo as primeiras operações, se possível distribuíndo a carga dos leitores pelas diversas réplicas.

Para a realização do trabalho, os alunos podem utilizar o código e ideias geradas em trabalhos dos anos anteriores. Em particular, poderão usar o sistema de comunicação em grupo e o sistema de RPCs replicados. Não hesitem em procurar esclarecimentos acerca da funcionalidades das camadas já disponíveis para não perderem tempo a concretizar funcionalidades que já estão disponíveis.

A título de exemplo, estão também disponíveis alguns relatórios de anos anteriores:



Luís Rodrigues