·

Cursos Gerais ·

Linguagens de Programação

Send your question to AI and receive an answer instantly

Ask Question

Preview text

Sincronização de IoTs Considere um sistema de monitoramento de um campo agrícola por exemplo de canade açúcar Nesse campo estão espalhados diversos sensores que registram algum atributo da natureza como temperatura humidade CO2 etc e registra também a hora dessa observação Depois de um intervalo de tempo ele envia um conjunto desses dados observados para um elemento centralizador Para validar a prova de conceito simule um ambiente de sincronização de IoT em um sistema distribuído observando os seguintes critérios mínimo de 4 processos que coletam dados da plantação o cada processo define a frequência de coleta de dados fictícios do ambiente o eles enviam os dados coletados e suas respectivas horas bem como sua geolocalização GPS para o elemento centralizador o o tamanho da mensagem deve ser o mais próximo de 4096 bytes não pode enviar um único dado coletado por vez mas agrupálo conforme esta regra no início do funcionamento de um processo ele recuperar a datahora do relógio do sistema local para efeito da desta simulação o relógio local de cada processo deve ser modificado aleatoriamente dentro do intervalo de 15s a cada ciclo o cada processo tem o controle do seu próprio relógio e de seu próprio ciclo o o tempo de cada ciclo também pode variar aleatoriamente podendo também ser adotado o valor constante de 10s O elemento centralizador também chamado de Responsável recebe todas as mensagens enviadas dos demais processos contendo seus dados de coleta hora e geolocalização Esses dados devem ser registrados em arquivo texto contendo inclusive o emissor da mensagem Se o Responsável perceber que um conjunto de dados recebido possuir um registro de hora distante 1s de sua própria hora local este Responsável inicia o processo de sincronização de relógio conforme proposto por Berkeley O algoritmo de Berkeley permite sincronizar diversos computadores em um sistema distribuído Para o entendimento do problema e da solução apresentados originalmente veja o trabalho publicado The accuracy of the clock synchronization achieved by TEMPO in Berkeley UNIX 43BSD em httpsdoiorg1011093229484 E se precisar de mais alguns exemplos veja httpslasarojcgithubiodsnotestimephysicalalgoritmodeberkeley Pontos de atenção não precisa considerar falha de mensagens o processo de sincronização sempre acontecerá independentemente da concorrência de mensagens enviadas de mais de um processo faça o registrolog das ações dos processos início da sincronização hora dos processos antes da sincronização hora depois da sincronização etc se achar mais prático pode limite a quantidade de rodadas de envio de dados para o elemento centralizador mínimo de 200 rodadas seu código deve ser desenvolvido em Java C C C Rust preferencialmente em 2 linguagens é obrigatório o uso de computadores diferentes para visualizar o teste em ambientes reais podese utilizar também máquinas virtuais no seu provedor de nuvem predileto ou até mesmo local