根据订阅类型和指定优先级的合并冲突解决示例
若要了解根据指定优先级值解决冲突的方法,以及一个订阅是服务器订阅还是客户端订阅,请考虑以下示例,该示例描述了在几项合并同步中对一行所作的一系列更新。
以下是一个基本合并复制拓扑中的四个站点的初始优先级值(一个发布服务器、两个具有服务器订阅的订阅服务器和一个具有客户端订阅的订阅服务器)。
站点 |
类型 |
优先级值 |
---|---|---|
A |
Publisher |
100.00 |
B |
Server Subscription |
75.00(分配值) |
C |
Server Subscription |
50.00(分配值) |
D |
Client Subscription |
0.00(默认值) |
阶段 1: 初始值
最初,站点 A(发布服务器)创建包含值等于 Nebraska 的行的第一版,该行在下一次的合并同步中复制到站点 B、C 和 D。 同步后该行的值如下。
站点 |
优先级值 |
行值 |
---|---|---|
A(发布服务器) |
100.00 |
Nebraska |
B(服务器订阅) |
75.00 |
Nebraska |
C(服务器订阅) |
50.00 |
Nebraska |
D(客户端订阅) |
0.00 |
Nebraska |
阶段 2: 发布服务器和具有服务器订阅的订阅服务器都更新行
站点 A 把该行值更新为 Texas,而站点 B 把该行值更新为 New Jersey。 在下一次合并同步发生时,站点 A 和站点 B 之间发生冲突。站点 A 在冲突中入选。 冲突入选方站点 A 的值传播到站点 B、C 和 D。
站点 |
优先级值 |
行值 |
---|---|---|
A(发布服务器) |
100.00 |
Texas |
B(服务器订阅) |
75.00 |
Texas |
C(服务器订阅) |
50.00 |
Texas |
D(客户端订阅) |
0.00 |
Texas |
阶段 3: 对同一行进行多次更改
假定站点 C 更新该行(更改为 North Carolina)并与发布服务器同步。 这不是冲突,因为 C 已经成功地合并了来自 A 的最新的更新(成功合并了行值 =“Texas”)。 然后假定站点 B 更新该行(更改为 Idaho)。
站点 |
优先级值 |
行值 |
---|---|---|
A(发布服务器) |
100.00 |
North Carolina |
B(服务器订阅) |
75.00 |
Idaho |
C(服务器订阅) |
50.00 |
North Carolina |
D(客户端订阅) |
0.00 |
Texas |
站点 B 与发布服务器同步时发生更新冲突。 因为站点 B 与站点 C 都是服务器订阅,而站点 B 的优先级比站点 C 的高,所以站点 B 在冲突中入选。 当其他两个站点也合并之后,站点 B 的值就传播到其他订阅服务器上。
站点 |
优先级值 |
行值 |
---|---|---|
A(发布服务器) |
100.00 |
Idaho |
B(服务器订阅) |
75.00 |
Idaho |
C(服务器订阅) |
50.00 |
Idaho |
D(客户端订阅) |
0.00 |
Idaho |
阶段 4: 具有服务器订阅和具有客户端订阅的订阅服务器都更新行
假定站点 D 更新行(更改为 New Mexico)并与发布服务器同步。 然后假定站点 B 更新行(更改为 California)。
站点 |
优先级值 |
行值 |
---|---|---|
A(发布服务器) |
100.00 |
New Mexico |
B(服务器订阅) |
75.00 |
California |
C(服务器订阅) |
50.00 |
Idaho |
D(客户端订阅) |
0.00 |
New Mexico |
站点 B 与发布服务器同步时发生更新冲突。 与前一示例不同,因为站点 D 具有一个客户端订阅,所以它在同步时采用发布服务器(站点 A)的优先级值。 因为站点 A 的优先级高于站点 B,所以站点 B 在冲突中落选;最初输入站点 D 的值入选。 (假如订阅服务器 B 先于订阅服务器 D 与站点 A 同步,则站点 B 当在冲突中入选。) 站点 D 在冲突中入选依靠的是发布服务器自在站点 D 上更新的行版本上次同步后尚未更改或接收另一更改。 如果任何具有服务器订阅的订阅服务器或者任何其他具有客户端订阅的订阅服务器先行同步,则遵循最高优先级或“最先进入发布服务器者入选”的规则。
所有站点都同步之后的最终值所示如下。
站点 |
优先级值 |
行值 |
---|---|---|
A(发布服务器) |
100.00 |
New Mexico |
B(服务器订阅) |
75.00 |
New Mexico |
C(服务器订阅) |
50.00 |
New Mexico |
D(客户端订阅) |
0.00 |
New Mexico |
当服务器订阅和客户端订阅在拓扑中的同一级混用时,同步的顺序和优先级的值决定着冲突的结果。 这最后一组更新说明了为什么必须慎重。 尽管该订阅服务器在三个订阅服务器中的优先级值最低,但是由于它首先与发布服务器同步(从而采用发布服务器的优先级值 100.00),所以在冲突中入选。 假如是站点 C(服务器订阅,优先级值 50.00)而非站点 D 输入了 New Mexico,则站点 B(服务器订阅,优先级值 75.00)当在冲突中入选,那么结果就会是 California。