算法 – OT和CRDT之间的差异
有人可以简单解释一下操作变换与CRDT之间的主要区别吗?
据我所知,两者都是允许数据在分布式系统的不同节点上没有冲突地收敛的算法。 在哪个用例中你会使用哪种算法? CRDT比OT更强大吗? 我问这个问题是因为我正在试图看看如何实现一个HTML文档的协作编辑器,不知道在哪个方向先看。我看到了ShareJS项目,他们试图在浏览器上支持contenteditables元素上的丰富文字协作。没有任何地方在ShareJS我看到任何尝试使用CRDT。 我们也知道,Google文档正在使用OT,它对于实时文件的丰富文档来说非常有用。 我也有兴趣听到其他用例,就像在数据库上使用这些算法一样。 Riak似乎使用CRDT。 OT可以用来同步数据库的节点,也可以替代Paxos / Zab / Raft吗?
两种方法都是类似的,因为它们提供最终的一致性。区别在于它们如何做。一种看法是:
> OT通过改变操作来做到这一点。操作通过线路发送,一旦接收到并发操作,它们将被转换。 你是对的,OT主要用于文本,并且早于CRDT,但research显示:
换句话说,CRDT合并是可交换的,而OT转换功能有时不是。 从Wikipedia article on CRDT:
有不同种类的CRDT(集合,计数器,…)适用于不同类型的问题。有一些是专为文本编辑而设计的。例如,Treedoc – A commutative replicated data type for cooperative editing。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |