Universidade Federal do Paraná
Departamento de Informática
Bacharelado em Ciência da Computação
Prof. Elias P. Duarte Jr.

Trabalho Prático de Redes de Computadores II - Turma 2015/1

Consistência de Dados com 2PC Simplificado

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"

Especificação do Trabalho: Consistência de Dados com 2PC Simplificado

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!

ENTREGA DO TRABALHO

Deve ser construída uma página Web, que contém em documentos HTML, os seguintes itens:

  • Relatório de como foi feito o trabalho e quais foram os resultados obtidos. Use desenhos, diagramas, figuras, todos os recursos que permitam ao professor compreender como a dupla estruturou o trabalho e quais resultados obteve. O objetivo é o professor entender como a dupla fez o trabalho, como o trabalho funciona.
  • Código Fonte comentado. ATENÇÃO: acrescente a todo programa a terminação ".txt" para que possa ser diretamente aberto em um browser. Exemplos: cliente.py.txt ou servidor.c.txt ou dispatcher.py.txt
  • Logs de execução dos processos cliente/servidores, que demonstrem a execução correta destes processos. Os testes devem ser exaustivos até o ponto que demonstrem com clareza a funcionalidade correta do sistema.

    Observações:

  • Não serão aceitos trabalhos impressos, nem em meio ótico/magnético.
  • Alguns trabalhos serão defendidos no laboratório, portanto certifique-se que seu trabalho funciona aqui.
  • Pode ser usada qualquer linguagem de programação. A diversidade é bem vinda! O professor recomenda que os alunos usem esta oportunidade para aprender a linguagem Python.


    Prof. Elias P. Duarte Jr.     Departamento de Informática     UFPR