Modèles de cohérence et réplicache
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.
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
La bonne réponse est la suivante.
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 ?
Ce qui suit est identique à la cohérence stricte, donc la cohérence séquentielle est également satisfaite.
Vous pouvez trouver l'ordre global ci-dessous, donc la cohérence séquentielle est correcte.
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.
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.
- A se produit avant B dans le même processus (client)
- Après A, le message est envoyé et la partie qui a reçu le message exécute B.
- 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.
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.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

Le passage de C / C à JavaScript nécessite de s'adapter à la frappe dynamique, à la collecte des ordures et à la programmation asynchrone. 1) C / C est un langage dactylographié statiquement qui nécessite une gestion manuelle de la mémoire, tandis que JavaScript est dynamiquement typé et que la collecte des déchets est automatiquement traitée. 2) C / C doit être compilé en code machine, tandis que JavaScript est une langue interprétée. 3) JavaScript introduit des concepts tels que les fermetures, les chaînes de prototypes et la promesse, ce qui améliore la flexibilité et les capacités de programmation asynchrones.

Les principales utilisations de JavaScript dans le développement Web incluent l'interaction client, la vérification du formulaire et la communication asynchrone. 1) Mise à jour du contenu dynamique et interaction utilisateur via les opérations DOM; 2) La vérification du client est effectuée avant que l'utilisateur ne soumette les données pour améliorer l'expérience utilisateur; 3) La communication de rafraîchissement avec le serveur est réalisée via la technologie AJAX.

L'application de JavaScript dans le monde réel comprend un développement frontal et back-end. 1) Afficher les applications frontales en créant une application de liste TODO, impliquant les opérations DOM et le traitement des événements. 2) Construisez RestulAPI via Node.js et Express pour démontrer les applications back-end.

Comprendre le fonctionnement du moteur JavaScript en interne est important pour les développeurs car il aide à écrire du code plus efficace et à comprendre les goulots d'étranglement des performances et les stratégies d'optimisation. 1) Le flux de travail du moteur comprend trois étapes: analyse, compilation et exécution; 2) Pendant le processus d'exécution, le moteur effectuera une optimisation dynamique, comme le cache en ligne et les classes cachées; 3) Les meilleures pratiques comprennent l'évitement des variables globales, l'optimisation des boucles, l'utilisation de const et de locations et d'éviter une utilisation excessive des fermetures.

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.

C et C jouent un rôle essentiel dans le moteur JavaScript, principalement utilisé pour implémenter des interprètes et des compilateurs JIT. 1) C est utilisé pour analyser le code source JavaScript et générer une arborescence de syntaxe abstraite. 2) C est responsable de la génération et de l'exécution de bytecode. 3) C met en œuvre le compilateur JIT, optimise et compile le code de point chaud à l'exécution et améliore considérablement l'efficacité d'exécution de JavaScript.
