Consistência seqüencial é um modelo de ordenação da memória do computador em que todos os acessos à memória parecem acontecer em uma única ordem seqüencial. Esta ordem é determinada pela ordem em que os acessos são feitos no código do programa. A consistência seqüencial é o modelo mais forte de ordenação da memória, e é a ordenação padrão para a maioria dos processadores modernos. A consistência sequencial é componível? Sim, a consistência sequencial é compostável. Isto significa que se você tiver um sistema composto de várias partes sequencialmente consistentes, o sistema inteiro também é sequencialmente consistente.
O que é consistência estrita no sistema distribuído?
Em um sistema distribuído, consistência estrita é a propriedade que todos os nós vêem os mesmos dados ao mesmo tempo. Isto está em contraste com a eventual consistência, que permite que alguns nós vejam dados diferentes em momentos diferentes.
A consistência estrita é muitas vezes difícil de ser alcançada em um sistema distribuído, devido à necessidade de todos os nós comunicarem entre si para se manterem sincronizados. No entanto, é uma propriedade desejável, pois permite que todos os nós do sistema tomem decisões com base nos mesmos dados. Isto pode ser importante em aplicações onde a consistência dos dados é crítica, como sistemas financeiros.
O que é consistência casual no sistema distribuído?
A consistência casual é um modelo de consistência usado em sistemas distribuídos. Ele permite algum grau de inconsistência, mas requer que cada processo individual tenha uma visão consistente do sistema. Isto significa que se dois processos tentarem ler os mesmos dados, ambos verão os mesmos dados, ou um processo verá os dados antes que o outro processo os veja.
O que é um modelo de consistência fraca?
Um modelo de consistência fraca é um modelo de computação distribuída em que algumas propriedades de segurança não são garantidas. Em particular, modelos de consistência fraca permitem algum grau de inconsistência entre réplicas, significando que diferentes réplicas dos mesmos dados podem ver valores diferentes em momentos diferentes.
Existem vários modelos diferentes de consistência fraca, cada um dos quais define um conjunto diferente de garantias. O modelo de consistência fraca mais conhecido é provavelmente o modelo de consistência eventual, que é frequentemente utilizado em bases de dados NoSQL. No entanto, existem muitos outros modelos de consistência fraca, tais como o modelo de Consistência Causal e o modelo de Consistência de Leitura dos Seus Escritos.
A escolha do modelo de consistência fraca é muitas vezes um trade-off entre consistência e disponibilidade. Em geral, modelos de consistência mais fraca são mais escaláveis e mais disponíveis do que modelos de consistência mais forte. No entanto, isto acontece à custa de garantias de consistência reduzida.
O que é consistência quiescente?
A consistência quiescente é um tipo de modelo de consistência de memória de hardware. Ele garante que, a qualquer momento, todos os threads de execução terão uma visão consistente da memória. Isto significa que, se uma thread modifica um dado compartilhado, todas as outras threads verão a modificação em algum ponto no futuro.
Existem alguns tipos diferentes de consistência quiescente. O mais comum é a “forte consistência quiescente”, que garante que, se um thread modifica um dado compartilhado, todos os outros threads verão a modificação no próximo acesso à memória. Este é o tipo mais forte de consistência quiescente, mas a sua implementação pode ser bastante dispendiosa.
“Fraca consistência quiescente” é uma forma mais fraca de consistência quiescente. Ela só garante que, se um thread modifica um dado compartilhado, todos os outros threads eventualmente verão a modificação. Isto é muito mais fácil de implementar do que uma consistência quiescente forte, mas pode levar a alguns bugs subtis.
“Eventual consistência quiescente” é a forma mais fraca de consistência quiescente. Ela só garante que, se um thread modificar um dado compartilhado, todos os outros threads eventualmente verão a modificação. Entretanto, não há garantia de quando os outros threads verão a modificação. Este é o mais fácil de implementar, mas pode levar a bugs muito sutis.
Em geral, a consistência quiescente é uma garantia bastante forte.