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.
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.
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.
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.
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.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.