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 2026/2

A Abstração do Grupo de Servidores

Entrega: Todos os trabalhos serão acessados sábado dia 7 de novembro de 2026; não serão aceitos trabalhos disponibilizados após esta data.

Os alunos devem informar por e-mail a URL do trabalho, usando o subject "TP REDES II 2026" -- máximo cuidado para enviar exatamente este subject, OK?

O trabalho deve 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.

Descrição do Trabalho

Você vai construir um servidor tolerante a falhas que retorna ao cliente o resultado do serviço implementado, além do identificador do servidor, seu endereço e a porta.

Este servidor consiste, na verdade, de um grupo de processos servidores. Cada servidor tem um identificador sequencial, assim temos o servidor 1, o servidor 2, ..., servidor N. Todos os membros sabem o identicador, endereço IP e porta de todos os outros. Vc deve implementar uma estratégia de monitoração interna dos membros do grupo. Periodicamente cada membro sem-falha do grupo envia uma mensagem por multicast informando aos demais membros que está sem-falha (este tipo de mensagem se chama heartbeat. Quando não recebem tais mensagens de um membro, os demais consideram que aquele membro falhou.

Ao receber uma requisição de um cliente, os membros do grupo elegem como líder o membro sem-falha com menor identificador para atender à requisição do cliente. Deve-se considerar que as falhas acontecem exclusivamente por parada total (um servidor falho interrompe completamente sua execução).

Cada dupla deve fazer o trabalho usando multicast IP/Ethernet. O cliente envia uma requisição para o endereço do grupo. A requisição pode ser apenas uma consulta (leitura), que é retornada imediatamente pelo servidor líder ou uma alteração (escrita). No caso da escrita, o líder executa a operação localmente e confirma aos outros membros do grupo, que então executam a operação e confirmam ao líder. Só então o servidor eleito envia a confirmação para o cliente.

Importante: cada dupla deve definir como é o serviço fornecido pelo grupo de servidores. Lembre-se, o serviço deve permitir consulta e alteração.

Mostre claramente como vc fez o trabalho e demonstre claramente o sucesso da sua estratégia. Vc deve simular falhas de membros do grupo (fazendo kill dos processos) e executando requisição com diversas configurações de membros falhos e sem-falha. Os logs devem ser feitos com, no mínimo, três servidores executando em hosts diferentes.

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.
  • 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
  • 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!


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