Entrega: Todos os trabalhos serão acessados na sexta-feira dia 5 de junho de 2015; não serão aceitos trabalhos disponibilizados após esta data. Atenção, são quase 3 semanas de prazo, organize-se!
O trabalho deve preferencialmente ser feito em dupla; o código, os testes e o relatório devem ser feitos por ambos os membros da dupla. Use esta oportunidade para melhorar sua habilidade de trabalhar em equipe.
Os alunos devem informar por e-mail a URL do trabalho, usando o subject "TP REDES II 2015-1"
Você vai implementar o protocolo 2PC ("Two-Phase Commit") em uma versão simplificada que assume que servidores e clientes jamais falham. O protocolo permite a implementação de um servidor replicado. Este servidor mantém algum dado (definido pela dupla) e você quer garantir a consistência destes dados em todas as réplicas a todo momento.
Um cliente que solicita uma alteração do dado envia uma solicitação para todas as réplicas. Se uma réplica pode executar a alteração ela envia um "OK" para o cliente. Se uma réplica já recebeu uma outra solicitação, então ela não pode executar a alteração e enviar um "NOK" para o cliente.
Se o cliente recebe "OK" de todas as réplicas, então pode ordenar que elas executem a alteração. Para isso envia a todas uma mensagem com "COMMIT". Caso contrário, se recebeu "NOK" de pelo menos uma réplica, envia "ABORT". A réplica que recebe "COMMIT" faz a alteração solicitada. A réplica que recebe "ABORT" interrompe o processamento da requisição.
A dupla deve implementar o serviço com pelo menos 3 servidores. Mostre claramente casos em que foi possível comitar e casos em que a alteração foi abortada.
A linguagem de programação permitida é de livre escolha dos alunos. Sugere-se Python. Todos os detalhes, como configuração, mensagens e o que não estiver especificado aqui deve ser definido e documentado no relatório. Interface, organização, criatividade são valorizadas! Capriche!
Prof. Elias P. Duarte Jr.     Departamento de Informática     UFPR