Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы понять, как разрешаются конфликты в соответствии с присвоенными значениями приоритета и является ли подписка серверной или клиентской, рассмотрим следующий пример, описывающий ряд обновлений для строки в процессе нескольких слияний.
Ниже приведены начальные значения приоритета для четырех сайтов в базовой топологии репликации слиянием (один Публикатор, два подписчика, использующих серверные подписки, и один подписчик, использующий клиентскую подписку).
Место | Тип | Значение приоритета |
---|---|---|
А | Издатель | 100.00 |
Б | Подписка на сервер | 75.00 (назначено) |
С | Серверная подписка | 50.00 (назначено) |
Д | Клиентская подписка | 0.00 (по умолчанию) |
Этап 1. Начальные значения
Изначально узел A (издатель) создает первую версию строки, со значением 'Nebraska', которая реплицируется на узлы B, C и D при следующей синхронизации слиянием. После синхронизации ниже приведены значения для строки.
Место | Тип | Значение строки |
---|---|---|
A (издатель) | 100.00 | Небраска |
B (сервисная подписка) | 75,00 | Небраска |
C (серверная подписка) | 50,00 | Небраска |
D (клиентская подписка) | 0.00 | Небраска |
Этап 2: Издатель и подписчик с подпиской на сервер обновляют строку
Сайт A обновляет значение строки на Техас, а сайт B обновляет значение строки на Нью-Джерси. При следующей синхронизации слиянием возникает конфликт между сайтами A и B. Сайт A выигрывает конфликт. Значение победителя конфликта с сайта A передается на сайты B, C и D.
Место | Значение приоритета | Значение строки |
---|---|---|
A (издатель) | 100.00 | Техас |
B (сервисная подписка) | 75,00 | Техас |
C (серверная подписка) | 50,00 | Техас |
D (клиентская подписка) | 0.00 | Техас |
Этап 3. Несколько изменений, внесенных в одну строку
Предположим, сайт C обновляет строку (меняет ее на Северную Каролину) и синхронизируется с издателем. Это не конфликт, так как C уже успешно объединил последнее обновление из A (со значением строки ='Техас' успешно объединены). Затем предположим, сайт B обновляет строку (изменяет ее на Idaho).
Место | Значение приоритета | Значение строки |
---|---|---|
A (издатель) | 100.00 | Северная Каролина |
B (сервисная подписка) | 75,00 | Айдахо |
C (серверная подписка) | 50,00 | Северная Каролина |
D (клиентская подписка) | 0.00 | Техас |
Когда сайт B синхронизируется с издателем, возникает конфликт обновлений. Так как обе подписки на B и C являются подписками на сервер, а приоритет B больше, чем C, сайт B выигрывает конфликт. После объединения двух других сайтов значение B распространяется на других подписчиков.
Место | Значение приоритета | Значение строки |
---|---|---|
A (издатель) | 100.00 | Айдахо |
B (сервисная подписка) | 75,00 | Айдахо |
C (серверная подписка) | 50,00 | Айдахо |
D (клиентская подписка) | 0.00 | Айдахо |
Этап 4. Подписчики с серверными и клиентскими подписками обновляют строку.
Предположим, сайт D обновляет строку (изменяя её на Нью-Мексико) и синхронизируется с издателем. Затем предположим, сайт B обновляет строку (изменяет ее в Калифорнию).
Место | Значение приоритета | Значение строки |
---|---|---|
A (издатель) | 100.00 | Нью-Мексико |
B (серверная подписка) | 75,00 | Калифорния |
C (подписка сервера) | 50,00 | Айдахо |
D (клиентская подписка) | 0.00 | Нью-Мексико |
Когда сайт B синхронизируется с издателем, возникает конфликт обновлений. В отличие от предыдущего примера, потому что у D есть клиентская подписка, он принимает значение приоритета издателя (сайта A) при синхронизации. Поскольку приоритет A выше, чем у B, B проигрывает спор; первоначально введенное в D значение оказывается успешным. (Если бы подписчик B был синхронизирован с A до того, как это сделал подписчик D, сайт B выиграл бы конфликт.) Победа сайта D в конфликте зависит от того, что издатель не вносил изменений и не получал других изменений с момента последней синхронизации версии строки, обновленной на сайте D. Если какой-либо подписчик с подпиской на сервер или любой другой подписчик с клиентской подпиской синхронизируется первым, применяется правило наивысшего приоритета или "первый, кто подключился к издателю, выигрывает".
Окончательные значения после синхронизации всех сайтов отображаются здесь.
Место | Значение приоритета | Значение строки |
---|---|---|
A (издатель) | 100.00 | Нью-Мексико |
B (сервисная подписка) | 75,00 | Нью-Мексико |
C (серверная подписка) | 50,00 | Нью-Мексико |
D (клиентская подписка) | 0.00 | Нью-Мексико |
Порядок синхронизации и значение приоритета определяют результаты конфликтов при смешивании серверов и клиентских подписок на одном уровне в топологии. Этот последний набор обновлений иллюстрирует, почему необходимо соблюдать осторожность. Хотя абонент имел наименьшее значение приоритета из трех абонентов, он выиграл конфликт, потому что первым синхронизировался с издателем, таким образом приняв значение приоритета издателя 100,00. Если бы сайт C (подписка на сервер с приоритетом 50,00) вошел в Нью-Мексику, а не сайт D, сайт B (подписка на сервер с приоритетом 75,00) выиграл бы конфликт, и результат был бы Калифорнией.