Ejemplo de resolución de conflicto de mezcla basada en el tipo de suscripción y las prioridades asignadas

Para comprender cómo se resuelven los conflictos de acuerdo con los valores de prioridad asignados y si una suscripción es de servidor o de cliente, considere el ejemplo siguiente, en el que se describen una serie de actualizaciones en una fila en varias sincronizaciones de mezcla.

Éstos son los valores de prioridad iniciales para cuatro sitios en una topología básica de replicación de mezcla (un publicador, dos suscriptores con suscripciones de servidor y un suscriptor con suscripción de cliente).

Sitio

Tipo

Valor de prioridad

A

Publisher

100

B

Server Subscription

75,00 (asignado)

C

Server Subscription

50,00 (asignado)

D

Client Subscription

0,00 (valor predeterminado)

Fase 1: Valores iniciales

Inicialmente, el sitio A (el publicador) crea la versión uno de la fila, que contiene el valor 'Nebraska', que se replica en los sitios B, C y D durante la siguiente sincronización de mezcla. Después de la sincronización, los valores de la fila son los siguientes.

Sitio

Valor de prioridad

Valor de fila

A (publicador)

100

Nebraska

B (Suscripción de servidor)

75

Nebraska

C (Suscripción de servidor)

50

Nebraska

D (Suscripción de cliente)

0

Nebraska

Fase 2: tanto el publicador como el suscriptor con suscripción de servidor actualizan la fila.

El sitio A actualiza el valor de la fila a Texas y el sitio B lo actualiza a New Jersey. Cuando se produce la siguiente sincronización de mezcla, se produce un conflicto entre los sitios A y B. El sitio A gana el conflicto. El valor del ganador del conflicto del sitio A se propaga a los sitios B, C y D.

Sitio

Valor de prioridad

Valor de fila

A (publicador)

100

Texas

B (Suscripción de servidor)

75

Texas

C (Suscripción de servidor)

50

Texas

D (Suscripción de cliente)

0

Texas

Fase 3: se realizan varios cambios en la misma fila.

Suponga que el sitio C actualiza la fila (la cambia a North Carolina) y se sincroniza con el publicador. Esto no es un conflicto, porque C ya mezcló correctamente la actualización más reciente de A (con el valor de fila ='Texas' correctamente mezclado). Suponga a continuación que el sitio B actualiza la fila (la cambia a Idaho).

Sitio

Valor de prioridad

Valor de fila

A (publicador)

100

North Carolina

B (Suscripción de servidor)

75

Idaho

C (Suscripción de servidor)

50

North Carolina

D (Suscripción de cliente)

0

Texas

Cuando el sitio B se sincroniza con el publicador, se produce un conflicto de actualización. Dado que B y C son suscripciones de servidor y que la prioridad de B es mayor que la de C, el sitio B gana el conflicto. Una vez se mezclan también los otros dos sitios, el valor de B se propaga a los demás suscriptores.

Sitio

Valor de prioridad

Valor de fila

A (publicador)

100

Idaho

B (Suscripción de servidor)

75

Idaho

C (Suscripción de servidor)

50

Idaho

D (Suscripción de cliente)

0

Idaho

Fase 4: tanto los suscriptores con suscripción de servidor como los suscriptores con suscripción de cliente actualizan la fila.

Suponga que el sitio D actualiza la fila (la cambia a New Mexico) y se sincroniza con el publicador. Suponga ahora que el sitio B actualiza la fila (la cambia a California).

Sitio

Valor de prioridad

Valor de fila

A (publicador)

100

New Mexico

B (Suscripción de servidor)

75

California

C (Suscripción de servidor)

50

Idaho

D (Suscripción de cliente)

0

New Mexico

Cuando el sitio B se sincroniza con el publicador, se produce un conflicto de actualización. A diferencia del ejemplo anterior, puesto que D es un suscriptor con suscripción de cliente, asumirá el valor de prioridad del publicador (sitio A) después de la sincronización. Como la prioridad de A es mayor que la de B, B pierde el conflicto; el valor que se introdujo inicialmente en D gana. Si se hubiera sincronizado el suscriptor B con A antes de que lo hiciera el suscriptor D, el sitio B habría ganado el conflicto. El sitio D ganador del conflicto confía en que el publicador no ha hecho ningún cambio ni ha recibido otro cambio desde que se sincronizó por última vez la versión de la fila actualizada en el sitio D. Si un suscriptor con suscripción de servidor u otro suscriptor con suscripción cliente se sincroniza primero, se sigue la regla de mayor prioridad o del primero que entra en el publicador.

A continuación se muestran los valores finales, después de la sincronización de todos los sitios.

Sitio

Valor de prioridad

Valor de fila

A (publicador)

100

New Mexico

B (Suscripción de servidor)

75

New Mexico

C (Suscripción de servidor)

50

New Mexico

D (Suscripción de cliente)

0

New Mexico

El orden de sincronización y el valor de prioridad determinan el resultado de los conflictos que se producen al mezclar suscriptores de servidor y de cliente en el mismo nivel de la topología. En este último conjunto de actualizaciones se ilustra por qué es necesario actuar con precaución. Aunque el suscriptor tenía el valor de prioridad más bajo de los tres suscriptores, ganó el conflicto al sincronizarse primero con el publicador (asumiendo de este modo el valor de prioridad del publicador: 100,00). Si el sitio C (suscriptor de servidor con un valor de prioridad de 50,00) hubiera introducido New Mexico en lugar de hacerlo el sitio D, el sitio B (suscriptor de servidor con un valor de prioridad de 75,00) habría ganado el conflicto y el resultado hubiera sitio California.