Consistência posterior
De Wikipedia, a enciclopédia encyclopedia
Consistência posterior ou consistência convergente é um modelo de consistência utilizado na computação distribuída com a finalidade de se atingir a alta disponibilidade, garantindo-se informalmente que, se nenhuma nova atualização de um dado for realizada, posteriormente todos os acessos a esse dado retornarão o último valor atualizado.[1] A consistência posterior, também chamada de replicação otimista, é amplamente implementada em sistemas distribuídos e tem origens nos primeiros projetos de computação móvel.[2] Geralmente, diz-se que um sistema que atingiu a consistência posterior convergiu ou alcançou a convergência da réplica.[3] A consistência posterior é uma garantia fraca. A maioria dos modelos de consistência mais fortes, como a Linearidade, são trivialmente posteriormente consistentes. Entretanto, um sistema que é meramente posteriormente consistente não costuma atender a restrições mais fortes.
Serviços Posteriormente Consistentes podem prover garantias semânticas BASE, acrônimo em inglês para as definições de Basically Available, Soft State, Eventual Consistency.[4][5]
- Basicamente disponível (Basically Available): operações de leitura e escrita estão disponíveis em todos os nós de um cluster, ainda que falhas ocorram, mas sem qualquer tipo de garantia de consistência, ou seja, uma operação de escrita pode não ser persistida após conflitos serem reconciliados ou uma operação de leitura pode não corresponder à última escrita.
- Estado soft (Soft State): sem a garantia de consistência, passado algum tempo, há apenas uma probabilidade p de que o estado do sistema tenha convergido.
- Consistência posterior (Eventual Consistency): dado um conjunto de entradas, o sistema converge para um estado consistente após um período de tempo suficientemente longo.
A consistência posterior é, às vezes, criticada[6] como responsável pelo aumento da complexidade de sistemas distribuídos. Em parte, isso ocorre porque a consistência posterior é tão somente uma garantia de liveness, ou seja, um estado consistente é alcançado em algum momento. Entretanto, não há garantia de safety, isto é, o sistema pode retornar qualquer valor antes de convergir.