Relógios Distribuídos
Sistemas distribuídos enfrentam desafios de concorrência quando múltiplos servidores tentam alterar o mesmo estado. Relógios distribuídos são usados para resolver esses conflitos, mas nem sempre confiam no relógio local.
Relógios de Lamport
Leslie Lamport introduziu a ideia de que cada processo mantém um contador, chamado Vector Clock. Se A causou B, então L(A) < L(B). No entanto, L(A) < L(B) não significa necessariamente que A causou B.
Vector Clocks
Para detectar concorrência, cada nó deve manter um contador para cada nó do sistema. Para comparar dois eventos, compara-se posição a posição.
Soluções Avançadas
Hybrid Logical Clocks
A solução Hybrid Logical Clocks combina tempo físico com um contador lógico. Essa abordagem é usada por sistemas como CockroachDB e YugabyteDB.
Version Vectors
Version Vectors e Dotted Version Vectors são usados em sistemas KV stores líderless, como o Riak.
Matrix Clocks e Bloom Clocks
Para sistemas com milhares de nós, Bloom Clocks são uma solução eficiente. Esses relógios permitem que o vetor cresça sem limitações.
Conclusão
O evento de 19/10, organizado pelo Craft & Code Club, vai explorar essas soluções avançadas e discutir os trade-offs de cada abordagem.
Sistemas distribuídos enfrentam desafios de concorrência, mas soluções avançadas como Vector Clocks, Hybrid Logical Clocks e Bloom Clocks permitem que esses sistemas operem de forma eficiente e sem perda de dados.