最佳答案
有人能简单地解释一下操作变换和 CRDT 之间的主要区别吗?
据我所知,这两种算法都允许数据在分布式系统的不同节点上不冲突地收敛。
在哪种情况下您会使用哪种算法? 据我所知,OT 主要用于文本,CRDT 更一般,可以处理更高级的结构,对吗?
CRDT 比 OT 更有效吗?
我问这个问题是因为我想知道如何实现 HTML 文档的协作编辑器,而不确定首先应该朝哪个方向看。我看到了 ShareJS 项目,以及他们试图在浏览器上支持 contenteditables
元素上的富文本协作。在 ShareJS 中,我没有看到任何使用 CRDT 的尝试。
我们也知道 Google Docs 正在使用 OT 技术,而且对于实时版本的富文档来说效果非常好。 谷歌之所以选择使用 OT,是因为 CRDT 在当时并不为人所知吗?或者今天也是个不错的选择?
我也对其他用例感兴趣,比如在数据库中使用这些算法。Riak 似乎用了 CRDT。OT 可以用来同步数据库的节点吗? 它可以替代 Paxos/Zab/Raft 吗?