Trabalho 3 - Sistemas Distribuídos

Data de entrega: 31/5

Aplicação de coleta em RSSF utilizando uma árvore geradora

Crie um programa TerraNet onde cada nó coleta a temperatura periodicamente e acende o led amarelo por 3 segundos caso a temperatura esteja acima de um determinado valor.

Adicione a seu programa a capacidade de um nó raiz disseminar um novo valor do período para todos os nós. Utilize um algoritmo baseado no probe/echo descrito no artigo de Andrews. Em particular, isso significa que um nó só deve propagar a mensagem recebida se ainda não o tiver feito. Pense nos casos de falhas, não consideradas na apresentação de Andrews. Procure garantir que cada mensagem vai chegar a toda a rede.

Estenda seu programa para que um nó raiz possa eventualmente solicitar a temperatura lida por cada nó. Essa coleta deve novamente utilizar o probe/echo, que cria implicitamente uma árvore geradora. Cada nó espera a resposta de todos os seus "sucessores" e manda para o progenitor na árvore gerada uma tabelinha com pares (id, valor). Seu programa deve tratar o caso de ser necessário enviar várias mensagens para compor a tabela.

Agora, a leitura periódica é armazenada em cada nó sob a forma de média das últimas 4 medidas, e essa média é enviada quando requisitada.

Procure pensar novamente nos casos de falhas e tratá-los na medida do possível. (Por exemplo, será que vale a pena cada nós manter informação sobre mais que um progenitor para o caso do primeiro falhar?) Teste seu programa no simulador e no testbed descrito em aulas.

Para testar essa parte, use uma aplicação bem simples executando no computador que faça pedidos diante de um prompt do usuário e mostre os resultados.

entregável: Envie o script desenvolvido por email e um relatório das dificuldades encontradas para desenvolver e testar seu programa.

Bibliografia:

Gregory Andrews. Paradigms for process interaction in distributed programs. ACM Computing Surveys, 23(1), 49-90. 1990.