O que é eventual consistência?
A consistência eventual é um modelo de programação no qual os programadores assumem que, durante um período de tempo suficiente e sem alterações em um sistema, a versão atual de um programa específico acabará por distribuir até que cada réplica do programa seja consistente. 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 é alcançada através de um processo de três etapas. Primeiro, as informações distribuídas são disponibilizadas no sistema; Isto é seguido por um estado suave, 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. Nos primeiros segundos após a divulgação de uma atualização, ninguém a terá; Não é suficiente TiEu já passou para os usuários do software baixar e instalar a atualização. Este é o estado "disponível"; A atualização existe, mas ainda não foi distribuída. Com o tempo, quando os usuários baixam a atualização, alguns terão e outros não. Depois de passar o tempo, porém, todo mundo que usa o software terá atualizado para a versão mais recente. Esta é a premissa por trás do estado de consistência eventual: com tempo suficiente, qualquer atualização se propaga totalmente em todo o sistema.
Como o sistema trabalha para eventual consistência, os conflitos são inevitáveis. Isso ocorre quando a versão do programa ou as informações atualmente no computador falha em corresponder à "versão do modelo" do programa. Os programas geralmente são criados para reconhecer esses conflitos e gerenciá -los. Quando os arquivos em um computador específico são mais antigos que a mais recente versão modelo do software ou dados em questão, o sistema geralmente solicitao usuário para iniciar uma atualização para resolver a disparidade.
Três métodos possíveis estão disponíveis para efetuar essas resoluções: gravar reparo, ler reparos e reparo assíncrono. Todos esses métodos trazem a versão do programa ou dados de acordo com o modelo consistente. A principal diferença entre eles tem a ver com a maneira como o sistema obtém a operação de reparo. Todas essas operações têm benefícios e desvantagens.
Em um reparo de gravação, as alterações no código armazenadas no computador são feitas durante uma operação de gravação, quando o computador já está escrevendo algo no disco rígido do sistema. Isso repara a inconsistência, alinhando o programa ou os dados com o modelo, mas também diminui 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. Em reparo assíncrono, o reparo ocorre quando nem uma operação de leitura nem gravação ocorre, levando ao CONSUMING de ciclos ociosos na CPU.