O que é consistência eventual?

A consistência eventual é um modelo de programação no qual os programadores assumem que, por um período de tempo suficientemente longo e sem alterações em um sistema, a versão atual de um programa específico será distribuída até que todas as réplicas do programa sejam consistentes. O conceito de consistência eventual é usado em métodos de programação como replicação otimista, memória compartilhada distribuída e transações distribuídas. Em relação aos bancos de dados, a consistência eventual é obtida através de um processo de três etapas. Primeiro, as informações distribuídas são disponibilizadas no sistema; isso é seguido por um estado flexível, no qual diferentes usuários ainda podem estar trabalhando com diferentes versões dos dados; e finalmente a consistência é alcançada e todos os computadores têm acesso a dados idênticos.

Uma das maneiras mais visíveis de aplicar consistência eventual é a atualização de software distribuída online. Nos primeiros segundos após o lançamento de uma atualização, ninguém a terá; não passou tempo suficiente para os usuários do software baixarem e instalarem a atualização. Este é o estado "disponível"; a atualização existe, mas ainda não foi distribuída. Com o tempo, à medida que os usuários baixam a atualização, alguns a terão e outras não. Depois de um tempo suficiente, todos que usam o software serão atualizados para a versão mais recente. Essa é a premissa por trás do estado de consistência eventual: dado tempo suficiente, qualquer atualização será propagada completamente em todo o sistema.

À medida que o sistema trabalha para uma consistência eventual, os conflitos são inevitáveis. Isso ocorre quando a versão do programa ou as informações atualmente no computador não correspondem à "versão do modelo" do programa. Os programas geralmente são configurados para reconhecer esses conflitos e gerenciá-los. Quando os arquivos em um computador específico são mais antigos que a versão mais recente do software ou dados em questão, o sistema geralmente solicita que o usuário inicie uma atualização para resolver a disparidade.

Três métodos possíveis estão disponíveis para efetuar essas resoluções: reparo de gravação, reparo de leitura e reparo assíncrono. Todos esses métodos alinham a versão do programa ou dos dados ao modelo consistente. A principal diferença entre elas tem a ver com a maneira como o sistema cronometra a operação de reparo. Todas essas operações têm vantagens e desvantagens.

Em um reparo de gravação, as alterações no código armazenado no computador são feitas durante uma operação de gravação, quando o computador já está gravando algo no disco rígido do sistema. Isso repara a inconsistência, alinhando o programa ou os dados com o modelo, mas também retarda temporariamente a operação de gravação original. Para um reparo de leitura, a operação corretiva ocorre durante um ciclo de leitura do disco rígido. Isso, por sua vez, diminui a operação de leitura. No reparo assíncrono, o reparo ocorre quando nenhuma operação de leitura ou gravação ocorre, levando ao consumo de ciclos inativos na CPU.

OUTRAS LÍNGUAS

Este artigo foi útil? Obrigado pelo feedback Obrigado pelo feedback

Como podemos ajudar? Como podemos ajudar?