You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于操作的CRDT的所有操作是否必须满足交换性?

关于基于操作的CRDT的交换性与收敛性疑问

我阅读了Mark Shapiro关于CRDT的文章,但不清楚基于操作的CRDT的所有操作是否都应满足交换性。

对于C(xi)中的任意两个操作f、g:(1)若二者无因果关系,则在<d(弱于因果关系)下是并发的,且必须可交换;(2)若二者存在因果关系a→b,但交付顺序<d未遵循该顺序,也必须可交换;(3)若二者存在因果关系a→b且按该顺序交付(a<d b),则所有副本均按此顺序执行。

(Shapiro等人,《Convergent and Commutative Replicated Data Types综合研究》,2011年,第11页)

从这段表述来看,按顺序交付的因果相关事件似乎可以不满足交换性,这让CRDT能够基于包含添加和删除操作的数据类型来实现。

但我遇到一个困惑的场景:假设存在可靠广播信道与3个副本(A、B、C):A向集合中添加"a"并向B、C广播该操作,但因网络状况,C接收该操作的延迟极高。在C接收该操作前,B已发送另一个从集合中删除"a"的操作。最终三个副本未收敛,尽管事件是按因果顺序广播的。

操作时序图

我的疑问是:

  • 基于操作的CRDT的操作是否必须满足交换性?
  • 基于操作的CRDT是否必须单调递增?
  • 还是我在理解上存在误区?

内容的提问来源于stack exchange,提问作者Ershetz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 22:36:25