← CRDT 可变树 · 多副本层级如何无冲突收敛 / 把它跑起来:多副本 + 可控网络 待审核 5 / 5
replicas · 多副本模拟器

把它跑起来:多副本 + 可控网络

前四页拼起来就是这一页:三个副本 R1 / R2 / R3 各持一棵树与一份 op log。你在某个副本上发一个 move,它先本地生效(祖先检查在此把关),再把这条 op 连同它的时间戳投进网络缓冲区,等待送达其他副本。你可以按任意顺序点击在途的 op 包把它投递出去——乱序、延迟、甚至重复投递都行(重复投递被幂等忽略)。无论怎么投,把缓冲区清空后,三个副本收敛到同一棵树

时间戳用 Lamport 时钟: 每个副本记一个计数器,本地发 op 时 +1、收到 op 时取 max 同步。并发(互不知道对方)的 op 计数器可能相同,由副本 id (R1<R2<R3) 打破平局——这就是并发 move 的 LWW 裁决。下方先「种入一组并发冲突」,再把缓冲区按你喜欢的顺序投递,看收敛。

这就是 strong eventual consistency: 只要两个副本收到的 op 集合相同,它们的树就必然相同——与到达顺序无关、无需中心协调、离线也能改。三块保证缺一不可:单亲森林建模 + 应用前祖先检查 + undo-do-redo 按 ts 重放