Compartilhar via


Exemplo de resolução de conflitos de fusão baseado no tipo de assinatura e prioridades atribuídas

Para entender como os conflitos são resolvidos de acordo com os valores de prioridade atribuídos e se uma assinatura é um servidor ou uma assinatura de cliente, considere o exemplo a seguir, que descreve uma série de atualizações para uma linha em várias sincronizações de mesclagem.

Veja os valores de prioridade inicial de quatro sites em uma topologia básica de replicação de mesclagem (um Editor, dois Assinantes com assinaturas de servidor e um Assinante com uma assinatura de cliente).

Sítio Tipo Valor de prioridade
A Publicador 100,00
B Assinatura do servidor 75.00 (atribuído)
C Assinatura do servidor 50.00 (atribuído)
D Assinatura do cliente 0,00 (padrão)

Fase 1: Valores iniciais

Inicialmente, o Site A (o Publicador) cria a versão um da linha que contém value='Nebraska', que é replicada para os Sites B, C e D durante a próxima sincronização de mesclagem. Após a sincronização, aqui estão os valores da linha.

Sítio Tipo Valor da linha
A (Editor) 100,00 Nebraska
B (Assinatura do servidor) 75,00 Nebraska
C Assinatura do servidor) 50,00 Nebraska
D (Assinatura do cliente) 0,00 Nebraska

Fase 2: Tanto o Editor quanto o Assinante com assinatura do servidor atualizam a linha

O Site A atualiza o valor da linha para Texas, e o Site B atualiza o valor da linha para Nova Jersey. Quando a próxima sincronização de mesclagem ocorre, há um conflito entre os sites A e B. O Site A vence o conflito. O valor vencedor do conflito do site A é propagado para os sites B, C e D.

Sítio Valor de prioridade Valor da linha
A (Editor) 100,00 Texas
B (Assinatura do servidor) 75,00 Texas
C Assinatura do servidor) 50,00 Texas
D (Assinatura do cliente) 0,00 Texas

Fase 3: Várias alterações feitas na mesma linha

Suponha que o site C atualize a linha (altere-a para a Carolina do Norte) e sincronize com o Publicador. Isso não é um conflito porque C já mesclou com sucesso a última atualização de A (onde o valor da coluna='Texas' foi mesclado com êxito). Em seguida, suponha que o Site B atualize a linha (altere-a para Idaho).

Sítio Valor de prioridade Valor da linha
A (Editor) 100,00 Carolina do Norte
B (Assinatura do servidor) 75,00 Idaho
C Assinatura do servidor) 50,00 Carolina do Norte
D (Assinatura do cliente) 0,00 Texas

Quando o site B é sincronizado com o Publicador, há um conflito de atualização. Como B e C são assinaturas de servidor e a prioridade de B é maior que a de C, o site B vence o conflito. Depois que os outros dois sites também forem mesclados, o valor de B é propagado para os outros subscritores.

Sítio Valor de prioridade Valor da linha
A (Editor) 100,00 Idaho
B (Assinatura do servidor) 75,00 Idaho
C Assinatura do servidor) 50,00 Idaho
D (Assinatura do cliente) 0,00 Idaho

Fase 4: Assinantes com assinaturas de servidor e cliente atualizam a linha.

Suponha que o site D atualize a linha (altere-a para o Novo México) e sincronize com o Publicador. Em seguida, suponha que o Site B atualize a linha (altere-a para a Califórnia).

Sítio Valor de prioridade Valor da linha
A (Editor) 100,00 Novo México
B (Assinatura do servidor) 75,00 Califórnia
C Assinatura do servidor) 50,00 Idaho
D (Assinatura do cliente) 0,00 Novo México

Quando o site B é sincronizado com o Publicador, há um conflito de atualização. Ao contrário do exemplo anterior, como d tem uma assinatura de cliente, ele assume o valor de prioridade do Publicador (site A) após a sincronização. Como a prioridade de A é maior que B, B perde o conflito; o valor inicialmente inserido em D vence. (Se o Assinante B tivesse sincronizado com A antes do Assinante D, o site B teria vencido o conflito.) O site D que venceu o conflito depende que o Publicador não tenha feito uma alteração ou recebido outra alteração, pois a versão da linha atualizada no Site D foi sincronizada pela última vez. Se qualquer Assinante com uma assinatura de servidor ou qualquer outro Assinante com uma assinatura de cliente sincronizar primeiro, a regra de prioridade mais alta ou "o primeiro a entrar no Editor vence" será seguida.

Os valores finais depois que todos os sites são sincronizados são mostrados aqui.

Sítio Valor de prioridade Valor da linha
A (Editor) 100,00 Novo México
B (Assinatura do servidor) 75,00 Novo México
C Assinatura do servidor) 50,00 Novo México
D (Assinatura do cliente) 0,00 Novo México

A ordem de sincronização e o valor de prioridade determinam o resultado de conflitos ao misturar assinaturas de servidor e cliente no mesmo nível em sua topologia. Este último conjunto de atualizações ilustra por que a cautela deve ser exercida. Embora o Assinante tenha o menor valor de prioridade dos três Assinantes, ele venceu o conflito porque sincronizou com o Editor (assumindo assim o valor de prioridade de 100,00 do Editor) primeiro. Se o site C (assinatura do servidor com um valor de prioridade de 50,00) tivesse entrado no Novo México em vez do site D, o site B (assinatura do servidor com um valor de prioridade de 75,00) teria vencido o conflito, e o resultado teria sido a Califórnia.