VapVup👤
← Voltar

Consistência Eventual

Nem sempre todos os nós de um sistema distribuído concordam instantaneamente. Aprenda como a consistência eventual mantém sistemas rápidos e disponíveis.

🗣️Analogia

A fofoca que se espalha

Imagine uma fofoca no escritório: uma pessoa conta para duas, que contam para outras quatro, e assim por diante. Em algum momento, todo mundo sabe da novidade — mas não foi instantâneo. Consistência eventual funciona assim: a informação se propaga aos poucos até todos os nós estarem atualizados.

🔺Conceito

Teorema CAP simplificado

Em um sistema distribuído, você só pode garantir dois de três: Consistência (todos veem o mesmo dado), Disponibilidade (sempre responde) e tolerância a Partições (funciona mesmo com falhas de rede). Na prática, partições sempre acontecem, então escolhemos entre consistência ou disponibilidade.

⚗️Conceito

BASE vs ACID

ACID prioriza consistência forte (bancos tradicionais). BASE (Basically Available, Soft state, Eventually consistent) prioriza disponibilidade — aceita dados temporariamente desatualizados em troca de um sistema que nunca para.

🔧Exemplo

Likes em redes sociais

Quando você curte um post, diferentes servidores podem mostrar contagens diferentes por alguns segundos:

// Servidor São Paulo: recebe o like
await cache.increment('post:123:likes'); // agora mostra 1001

// Servidor Nova York: ainda não recebeu a réplica
await cache.get('post:123:likes'); // ainda mostra 1000

// Após alguns segundos, a réplica chega
// Servidor Nova York agora também mostra 1001

// Isso é aceitável! O usuário não percebe
// a diferença de 1 like por 2 segundos.
Conceito

Quando consistência eventual é aceitável?

É perfeita para contadores de likes, feeds, notificações e catálogos. Não é adequada para saldos bancários, reservas de assento ou estoque com última unidade — nesses casos, precisamos de consistência forte.