Maison >interface Web >js tutoriel >Modèles de cohérence et réplicache

Modèles de cohérence et réplicache

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-06 02:57:42664parcourir

Modèle de cohérence

Le modèle de cohérence est un ensemble de réglementations sur le degré de cohérence qui sera fourni dans un système distribué. Parmi les articles précédents, il y a des informations sur le compromis entre la latence et la cohérence dans la théorie PACELC, et sur le degré de cohérence qui sera fourni en fonction de ce compromis.

Replicache, évoqué dans le post précédent, est également un type de système distribué. On dit que Replicache suit la cohérence causale.

Consistency Models and Replicache
Source

Une stricte cohérence

Cohérence qui vous permet de toujours lire les valeurs par ordre chronologique. Toutes les lectures effectuées après l'écriture de la valeur liront toujours cette valeur. Pour satisfaire cela, deux conditions sont nécessaires. Il existe une horloge globale partagée par tous les nœuds et doit y être synchronisée, et l'écriture doit être effectuée immédiatement.

w(x)a : Écrivez la valeur a dans x, r(x)a : Lisez la valeur a à partir de x

Lorsque w(x)a se produit dans le nœud 1 au temps t et que r(x) se produit dans le nœud 2 après t delta (0,0000000000000001s), le nœud 2 doit lire la valeur a.

Une horloge globale doit exister pour sérialiser l'opération afin que l'opération ne soit pas effectuée au même moment t, et l'écriture doit être effectuée immédiatement pour que la valeur écrite soit lue à l'heure t delta.

Mais c'est en réalité impossible. Par conséquent, la stricte cohérence existe en tant que théorie.

Si une stricte cohérence est respectée dans les situations ci-dessous
Consistency Models and Replicache

La bonne réponse est la suivante.
Consistency Models and Replicache

Cohérence séquentielle

Le mot-clé principal de la cohérence séquentielle est « Ordre global ». Toutes les opérations d'écriture/lecture doivent se comporter comme s'il existait une seule séquence unifiée. De plus, les opérations effectuées par chaque processus (client) doivent être exécutées dans cet ordre.

Dans le cas ci-dessous, quelles valeurs p3 et p4 peuvent-ils lire ?
Consistency Models and Replicache

Ce qui suit est identique à la cohérence stricte, donc la cohérence séquentielle est également satisfaite.
Consistency Models and Replicache

Vous pouvez trouver l'ordre global ci-dessous, donc la cohérence séquentielle est correcte.
Consistency Models and Replicache

Ordre global : w(x)a, r(x)a, w(x)b, r(x)b

Cependant, dans le cas ci-dessous, a est écrit avant b, mais est lu plus tard. Dans ce cas, la cohérence séquentielle n'est pas satisfaite.

Consistency Models and Replicache

Cohérence causale

Causal signifie relation de cause à effet. "Ça arrive-avant (→)" Il est important de comprendre qu'il s'agit d'une relation.

A → B est valable dans les cas suivants.

  1. A se produit avant B dans le même processus (client)
  2. Après A, le message est envoyé et la partie qui a reçu le message exécute B.
  3. Si A → B et B → C, alors A → C.

La cohérence causale est une règle dans laquelle cette relation de cause à effet est visible dans tous les nœuds.

Le cas ci-dessous est la cohérence causale.

Consistency Models and Replicache

Les seules relations « arrive avant » que l'on peut trouver ici sont w(x)a → r(x)a et w(x)b → r(x)b, qui sont satisfaites par tous les processus. Il est normal que P3 lise b en premier. En effet, les deux opérations d'écriture sont indépendantes, il n'y a donc pas de relation de cause à effet de w(x)a → w(x)b.

Ce qui suit n’établit pas de cohérence causale. La raison en est qu'il existe une relation de cause à effet de w(x)a → w(x)c, et c est lu avant a dans P3.

Consistency Models and Replicache

Cohérence éventuelle

Éventuel C'est une règle qui (éventuellement) devient cohérente. À un moment donné, lorsqu’il n’y a plus d’opérations d’écriture et que le réseau se stabilise, tous les nœuds finiront par voir la même valeur. C'est une convention très limitée.

Cohérence dans la réplique

On dit que Replicache suit la cohérence causale. Il s’agit d’une cohérence causale légèrement plus forte, alors découvrons-le plus tard.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn