CCT-UFCA/Ciência da Computação/Sistemas Distribuídos/Sincronização em Sistemas Distribuídos
Aparência
Problemas de Sincronização em Sistemas Distribuídos
[editar | editar código]Em sistemas distribuídos, a ausência de um relógio global compartilhado cria desafios para sincronizar eventos e garantir consistência. Cada nó do sistema possui seu próprio relógio, que pode divergir dos demais devido a variações de hardware ou latência de comunicação.
- Principais Problemas:
- Inconsistências Temporais: Relógios em diferentes máquinas podem apresentar tempos desatualizados, dificultando a ordenação de eventos.
- Latência de Rede: Atrasos na comunicação podem causar discrepâncias entre o envio e o recebimento de mensagens.
- Falta de Sincronização Exata: Processos em diferentes máquinas podem não ter conhecimento do estado ou horário real de outros processos.
Exemplo: Em uma transação bancária distribuída, a inconsistência nos horários entre servidores pode levar a um processamento fora de ordem, causando erros como a execução de débitos antes de créditos.
Relógios Físicos e Lógicos
[editar | editar código]- Relógios Físicos:
- Referem-se aos relógios de hardware disponíveis em cada nó.
- Baseiam-se em padrões como UTC (Coordinated Universal Time), mas requerem sincronização frequente para reduzir desvios.
Exemplo: Protocolos como NTP (Network Time Protocol) sincronizam os relógios físicos de servidores com fontes de tempo confiáveis.
- Relógios Lógicos:
- São abstrações usadas para ordenar eventos em sistemas distribuídos, ignorando o tempo físico real.
- Relógio de Lamport: Usa um contador incremental para representar a ordem de eventos.
- Relógio Vetorial: Expande a ideia do relógio de Lamport para capturar relações de causalidade entre eventos.
Exemplo: Em um sistema de mensagens, os relógios lógicos ajudam a determinar a ordem de envio e recebimento de mensagens.
Algoritmos de Sincronização de Relógios
[editar | editar código]- Cristian’s Algorithm:
- Sincroniza os relógios de um cliente com um servidor de tempo.
- O cliente envia uma solicitação ao servidor, recebe o horário e ajusta seu relógio considerando a latência estimada da rede.
Exemplo: Usado em redes locais para sincronizar sistemas com pouca variação de latência.
- Berkeley Algorithm:
- Funciona como um consenso de tempo entre um grupo de máquinas.
- O servidor central coleta os horários de outros nós, calcula a média e envia ajustes necessários a todos os nós.
Exemplo: Ideal para redes privadas onde não há acesso constante a uma fonte UTC.
- Protocolo NTP (Network Time Protocol):
- Um dos mais usados, sincroniza relógios com precisão utilizando uma hierarquia de servidores de tempo.
Exemplo: Sistemas operacionais modernos, como Windows e Linux, usam o NTP para ajustar seus relógios.
Exclusão Mútua em Sistemas Distribuídos
[editar | editar código]Exclusão mútua garante que apenas um processo acesse um recurso compartilhado de cada vez. Isso é fundamental em sistemas distribuídos, onde processos podem estar em nós diferentes.
Algoritmos de Exclusão Mútua:
- Algoritmo Centralizado: Um nó atua como coordenador, controlando o acesso aos recursos.
- Vantagem: Simples e eficiente em redes pequenas.
- Desvantagem: Ponto único de falha.
- Algoritmo Distribuído: Os processos comunicam entre si para decidir qual terá acesso ao recurso.
- Exemplo: Baseado no envio de mensagens e marcação de tempos (relógios lógicos).
- Token Passing: Um token é passado entre os nós. Apenas o nó com o token pode acessar o recurso.
- Exemplo: Redes Token Ring.
Exemplo: Sistemas de banco de dados distribuídos utilizam exclusão mútua para gerenciar operações de escrita em registros compartilhados.
Algoritmos de Eleição
[editar | editar código]Algoritmos de eleição identificam um coordenador ou líder em sistemas distribuídos, essencial para funções centralizadas como sincronização.
- Algoritmos Comuns:
- Bullying Algorithm:
- Todos os nós enviam mensagens para identificar o nó com maior ID como líder.
- Exemplo: Usado em sistemas onde os nós podem se comunicar diretamente.
- Ring Algorithm:
- Os nós estão organizados em um anel lógico. Cada nó passa mensagens para o próximo no anel até que o líder seja eleito.
- Exemplo: Usado em redes ordenadas.
- Bullying Algorithm:
Exemplo: Em um cluster de servidores, um algoritmo de eleição pode ser usado para eleger o nó principal para coordenar tarefas.
Referências
[editar | editar código]- https://www-usr.inf.ufsm.br/~ceretta/elc1018/sincronizacao.pdf
- https://www.inf.ufpr.br/elias/sisdis/9aulaSisDisRelogiosLogicos.pdf
- https://www.inf.pucrs.br/~gustavo/disciplinas/ppd/material/slides-sinc_relogios-novo.pdf
- https://www.cos.ufrj.br/~daniel/sd-2021/slides/aula_14.pdf
- https://www-di.inf.puc-rio.br/~endler/courses/DA/transp/Election.pdf