Professional Documents
Culture Documents
Abstract. This article aims to show a solution found for the problem of clock
synchronization, through distributed systems. This work was developed and
tests performed without system, such as difficulties encountered, how they were
solved and the final result, showing the developed product and tests performed
without system. So that the synchronization between the clocks is working.
Resumo. Este artigo tem como finalidade mostrar a solucao encontrada para
o problema de sincronizacao de relogios, por meio de sistemas distribudos.
Esse trabalho foi passado ao grupo TEC502 e aqui sera detalhando todo o
processo de construcao do sistema, mostrando quais as ferramentas utilizadas
nesse processo, quais as dificuldades encontradas, como elas foram resolvidas
e o resultado final, mostrando o produto desenvolvido e testes realizados no
sistema para que a sincronia entre os relogios esteja funcionando.
1. Introducao
Hoje em dia, praticamente tudo que o ser humano faz gira em torno de tempo, seja tempo
de trabalho, tempo de sono, tempo de viagens. Cada vez mais as pessoas querem fa-
zer mais coisas, em menos tempo, ou tentando sempre administra-lo da melhor maneira
possvel para que possa cumprir todas as suas tarefas.
Nesse mundo monotono, e necessario sempre se manter atualizado, uma vez que
o tempo e essencial para os seus compromissos diarios, atrasos no horario do seu com-
putador, relogio de pulso ou smartphone, mesmo que de alguns minutos ou segundos,
pode gerar efeitos catastroficos, isso pode ser comprovado pela TEORIA DO CAOS
de Edward Lorenz. Na teoria do caos, Lorenz explica que pequenos eventos distintos, em
locais diferentes ou nao, podem provocar eventos maiores, chegando ate ser possvel criar
catastrofes a partir do bater de asas de uma borboleta.
Entao, pensando em evitar possveis catastrofes no mundo, foi solicitado que o
grupo TEC502 produzisse um software capaz de sincronizar relogios de computadores
por meio de sistemas distribudos, que seus donos possam realizar suas tarefas e ir aos
seus compromissos no horario correto.
2. Fundamentacao Teorica
Para que o software de sincronia por meio de sistemas distribudos pudesse ser desenvol-
vido, foi necessaria uma busca mais aprofundada sobre o que poderia ser seria utilizado,
e entao constatou-se que seria utilizado:
2.1. Enderecos Multicast
Enderecos Multicast sao uma faixa de enderecamento IP definida pela RFC 5771. Seu
intervalo compreende os valores entre 224.0.0.0 ate 239.255.255.255, sendo que toda a
faixa 224.0.0.0 e reservada e nao deve ser utilizada [Deering 1988] [(IETF) 2010].
O JAVA possui uma API que simplifica a utilizacao de enderecos multicast. A
API MulticastSocket possui um comando que insere a sua aplicacao em um grupo que
responde a um endereco multicast escolhido anteriormente e que respeite o intervalo de
enderecamento definido. Apos uma aplicacao entrar no grupo ene sera capaz de enviar e
receber mensagens de todos os outros elementos que podem estar nesse grupo.
2.3.1. Tempo em SD
2.5. Threads
Para desenvolver um sistema que conseguisse tratar de muitas informacoes provenientes
do grupo multicast e o seu proprio processamento foi necessario a utilizacao de Threads
para assegurar que as tarefas fossem realizadas paralelamente. Conseguindo assim, de
forma satisfatoria realizar uma conversa no grupo ao mesmo tempoque realiza uma
decisao [Tanenbaum 2003].
Um conceito relacionado a threads e o de multithread, onde em um mesmo ob-
jeto, um mesmo elemento, existe mais de uma thread sendo executada, o que e aplicado
nesse processo de desenvolvimento.
3. Metodologia
Como o sistema de sincronizacao deve funcionar para um grupo especfico de relogios,
viu-se a necessidade de conectar todos esses relogios de alguma forma, e a solucao mais
viavel encontrada, foi a utilizacao de grupos multicast. Utilizando a API MulticastSocket
e possvel criar um grupo onde todos os computadores recebem as mensagens enviadas
para o grupo. Alem disso nao e necessario ter um unico servidor base para os dados,
todos os relogios podem acabar sendo selecionados como lder do grupo e assim acabar
assumindo a funcao de Servidor de tempo, e uma vez que isso acontece, todos os outros
relogios devem entender que este e o lder e comecar a atualizar seu horario a partir dele.
Quando ocorre a conexao de um novo relogio no grupo ele ja passa a receber
mensagens dos outros, e quando isso acontece e gerada uma eleicao de coordenador,
onde o vencedor e o relogio como maior horario.
O sistema basicamente funciona da seguinte maneira:
Apos a abertura da interface a contagem do relogio e iniciada com o comando
Start.
Acontece a conexao do relogio com os grupos multicast.
Verificacao de quem e o relogio lder do grupo.
Eleicao de um lder, caso necessario.
Envio/recebimento de mensagens com o horario do lder, e sincronizacao dos
relogios.
Para a construcao do software foi utilizada a IDE Eclipse, iniciado pela IBM em
novembro de 2001 e apoiado por um consorcio de fornecedores de software. A fundacao
eclipse foi criada em janeiro de 2004 como uma empresa independente sem fins lucra-
tivos para atuar como mordomo da comunidade eclipse. Alem disso, a linguagem de
programacao utilizada na construcao do sistema foi o java em todas as suas partes.
4. Resultados e Discussoes
Ao iniciar o software e mostrada uma tela onde e possvel alterar a hora do relogio, alterar
o tempo de Drift, inciar o relogio e tambem conectar a um grupo multicast, deve-se clicar
no botao Start caso seja o primeiro relogio a se conectar no grupo.
Ao realizar a conexao e entrar no grupo, esse relogio e adicionado em grupos au-
xiliares criados para segmentar os dados de foma que nao ocorra um fluxo grande e desne-
cessario em apenas um grupo, evitando problemas de atraso na sincronizacao por causa do
grande fluxo de informacoes na rede. Existem dois grupos: um grupo para recebimento
de atualizacoes de horario, e outro para comunicacao de solicitacoes e protocolo entre
relogios. Alem disso todo o processo foi dividido em varias Threads, de forma a garantir
que todos os passos da execucao do programa seja de certa forma independentes entre si.
Foram criadas as Threads de verificacao do grupo multicast, definindo assim o primeiro
lder caso nao exista nenhum outro relogio no grupo, a thread que e responsavel por re-
ceber e processar a atualizacao de horario do lder, a thread que envia as atualizacoes do
horario, caso o dispositivo seja o lder do grupo e a thread que e responsavel pela eleicao.
Um ponto decisivo da construcao deste software foi a definicao do metodo de
eleicao, e a forma de sincronizacao de relogios, assuntos que foram pertinentes em todas
as sessoes tutoriais, e que foram fonte de varios questionamentos e duvidas. Apos as
discussoes entre o grupo, por consenso foi definido que a aplicacao que possusse o maior
horario deveria se tornar o lder do grupo, de forma a manter o tempo sempre avancando,
requisito que foi descrito no texto base do problema, em em meio a tantas interpretacoes
possveis.
A solucao computacional para a eleicao, a partir da definicao do que deveria ocor-
rer, foi feita com base no algoritmo de Bully, sendo que, ao inves de ser o maior ID, o
maior tempo seria escolhido como o lder do grupo. Essa solucao foi desenvolvida com a
ajuda de Alyson Dantas, um componente do grupo, mas de uma dupla diferente.
5. Conclusao
Ao ser repassado para o grupo TEC502, o problema explicita o que o sistema deve ser
capaz de fazer: sincronizacao dos relogios que estao ligados a rede, tratamentos para
casos onde o relogio que estava sendo utilizado como referencia deixe de enviar o horario
para os outros, interface com a hora do relogio, opcoes para que a hora seja alterada e
tambem uma opcao para que um tempo de Drift (atraso) seja inserido entre os relogios.
O texto tambem especifica que deve ser encontrada uma forma de selecionar um novo
relogio como lder, alem disso, tambem ha uma condicao que diz que o tempo so avanca,
isso restringe mudancas de horario de maneira em que o relogio regrida no tempo, o que
quebraria a condicao de monotonicidade.
Os requisitos propostos no problema foram cumpridos de forma parcial, onde o
processo de sincronia funciona de forma satisfatoria, com apenas um atraso mnimo entre
os relogios; a solucao para escolher um novo relogio lder tambem funciona, mas de forma
satisfatoria, uma vez que se o lder cair e nao entrar nenhum outro relogio no grupo o
algoritmo de eleicao nao funciona de forma 100% correta, falha essa que aparenta ser
na utilizacao de multithreading, pois o processo de eleicao e realizado, mas entra em um
estado congeladoe tem sua continuidade apenas quando um novo relogio e conectado
ao grupo.
Referencias
Deering, S. E. (1988). Multicast routing in internetworks and extended LANs, volume 18.
ACM.
dos Reis, F. (2016). Curso de redes protocolo udp (user datagram protocol).
Disponvel em: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-
redes-protocolo-udp-user-datagram-protocol/. Acesso em: 10 jul. 2017.
(IETF), I. E. T. F. (2010). Iana guidelines for ipv4 multicast address assignments. Dis-
ponvel em: https://tools.ietf.org/html/rfc5771. Acesso em: 10 jul. 2017.
Tanenbaum, A. S. (2003). Sistemas Operacionais Modernos. Pretience Hall do Brasil, 2
edition.
Tanenbaum, A. S. and Steen, M. V. (2006). Distributed systems: principles and para-
digms. Pretience Hall, 2th edition.