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.

Por que sistemas distribuídos não confiam no relógio (e o que usam no lugar)

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.

ConfiamDistribuidosLugarSistemasUsam