Exemple d'une résolution de conflit de fusion d'après le type d'abonnement et les priorités affectées
Pour comprendre le processus de résolution des conflits d'après les valeurs de priorité affectées et le fait qu'un abonnement est un abonnement serveur ou client, examinez l'exemple ci-dessous. Celui-ci décrit une série de mises à jour apportées à une ligne via plusieurs synchronisations de fusion.
Voici les valeurs de priorité initiales de quatre sites dans une topologie de réplication de fusion de base (un serveur de publication, deux Abonnés avec des abonnements serveur et un Abonné avec un abonnement client).
Site | Type | Valeur de priorité |
---|---|---|
A |
Publisher |
100.00 |
B |
Server Subscription |
75,00 (affectée) |
C |
Server Subscription |
50,00 (affectée) |
D |
Client Subscription |
0,00 (valeur par défaut) |
Phase 1 : valeurs initiales
Initialement, le site A (l'éditeur) crée la version 1 de la ligne contenant value='Nebraska', qui est ensuite répliquée vers les sites B, C et D lors de la prochaine synchronisation de fusion. Après la synchronisation, voici les valeurs de la ligne.
Site | Valeur de priorité | Valeur de ligne |
---|---|---|
A (Éditeur) |
100.00 |
Nebraska |
B (Abonnement serveur) |
75.00 |
Nebraska |
C (Abonnement serveur) |
50.00 |
Nebraska |
D (Abonnement client) |
0.00 |
Nebraska |
Phase 2 : Le serveur de publication et un Abonné avec un abonnement serveur mettent tous deux la ligne à jour
Le site A met à jour la valeur de la ligne avec Texas et le site B met à jour la valeur de la ligne avec New Jersey. Lors de la synchronisation de fusion suivante, il y a un conflit entre les sites A et B. Le site A remporte le conflit. La valeur du gagnant du conflit sur le site A est propagée vers les sites B, C et D.
Site | Valeur de priorité | Valeur de ligne |
---|---|---|
A (Éditeur) |
100.00 |
Texas |
B (Abonnement serveur) |
75.00 |
Texas |
C (Abonnement serveur) |
50.00 |
Texas |
D (Abonnement client) |
0.00 |
Texas |
Phase 3 : plusieurs modifications sont apportées à la même ligne
Si le site C met la ligne à jour (en la modifiant par North Carolina) et qu'il se synchronise avec l'éditeur. Il n'y a pas de conflit car C a déjà réussi la fusion avec la dernière mise à jour de A (la ligne value='Texas' a été correctement fusionnée). Ensuite, si le site B met à jour la ligne (en la modifiant par Idaho).
Site | Valeur de priorité | Valeur de ligne |
---|---|---|
A (Éditeur) |
100.00 |
North Carolina |
B (Abonnement serveur) |
75.00 |
Idaho |
C (Abonnement serveur) |
50.00 |
North Carolina |
D (Abonnement client) |
0.00 |
Texas |
Lorsque le site B se synchronise avec l'éditeur, un conflit de mise à jour se produit. Étant donné que B et C sont des abonnements serveur et que la priorité de B est supérieure à celle de C, le site B remporte le conflit. Après que les deux autres sites ont également fusionné, la valeur de B est propagée vers les autres abonnés.
Site | Valeur de priorité | Valeur de ligne |
---|---|---|
A (Éditeur) |
100.00 |
Idaho |
B (Abonnement serveur) |
75.00 |
Idaho |
C (Abonnement serveur) |
50.00 |
Idaho |
D (Abonnement client) |
0.00 |
Idaho |
Phase 4 : Un Abonné avec un abonnement serveur et l'Abonné avec un abonnement client mettent tous deux la ligne à jour
Si le site D met la ligne à jour (en la modifiant par New Mexico) et qu'il se synchronise avec l'éditeur. Ensuite, si le site B met à jour la ligne (en la modifiant par California).
Site | Valeur de priorité | Valeur de ligne |
---|---|---|
A (Éditeur) |
100.00 |
New Mexico |
B (Abonnement serveur) |
75.00 |
California |
C (Abonnement serveur) |
50.00 |
Idaho |
D (Abonnement client) |
0.00 |
New Mexico |
Lorsque le site B se synchronise avec l'éditeur, un conflit de mise à jour se produit. Contrairement à l'exemple précédent, étant donné que D a un abonnement client, il endosse la valeur de priorité du serveur de publication (site A) lors de la synchronisation. Du fait que la priorité de A est supérieure à celle de B, B perd le conflit ; c'est la valeur entrée initialement dans D qui gagne. (Si l'Abonné B s'était synchronisé avec A avant que l'Abonné D le fasse, le site B aurait remporté le conflit.) Pour que D gagne le conflit, il faut que l'éditeur n'ait effectué aucune modification ni reçu une autre modification depuis la dernière synchronisation de la version de la ligne mise à jour sur le site D. Si un Abonné avec un abonnement serveur ou tout autre Abonné avec un abonnement client se synchronise en premier, la règle de la priorité la plus élevée ou « le premier dans le serveur de publication l'emporte » est appliquée.)
Les valeurs finales après la synchronisation de tous les sites sont affichées ci-dessous :
Site | Valeur de priorité | Valeur de ligne |
---|---|---|
A (Éditeur) |
100.00 |
New Mexico |
B (Abonnement serveur) |
75.00 |
New Mexico |
C (Abonnement serveur) |
50.00 |
New Mexico |
D (Abonnement client) |
0.00 |
New Mexico |
L'ordre de synchronisation et la valeur de priorité déterminent l'issue des conflits lorsque des abonnements serveur et client sont mélangés au même niveau de votre topologie. Ce dernier ensemble de mises à jour illustre l'attention qui doit être accordée. Bien que l'Abonné ait la valeur de priorité la plus faible des trois Abonnés, celui-ci remporte le conflit car il s'est synchronisé le premier avec le serveur de publication (endossant par conséquent la valeur de priorité 100,00 du serveur de publication). Si le site C (abonnement serveur avec une valeur de priorité de 50,00) avait entré New Mexico à la place du site D, le site B (abonnement serveur avec une valeur de priorité de 75,00) aurait remporté le conflit, et le résultat aurait été California.
Voir aussi
Concepts
Comment la réplication de fusion détecte et résout les conflits