- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
谁能简单解释一下 Operational Transform 和 CRDT 之间的主要区别?
据我了解,这两种算法都允许数据在分布式系统的不同节点上无冲突地聚合。
您会在哪个用例中使用哪种算法?据我了解,OT 主要用于文本,而 CRDT 更通用,可以处理更高级的结构,对吧?
CRDT 比 OT 更强大吗?
我问这个问题是因为我正在尝试了解如何为 HTML 文档实现协作编辑器,但不确定首先要看哪个方向。我看到了 ShareJS 项目,以及他们在 contenteditables
元素上支持浏览器富文本协作的尝试。在 ShareJS 的任何地方,我都没有看到任何为此使用 CRDT 的尝试。
我们还知道 Google 文档正在使用 OT,它在丰富文档的实时编辑方面效果很好。Google 选择使用 OT 是因为当时 CRDT 还不是很出名吗?还是今天也是一个不错的选择?
我也有兴趣了解其他用例,例如在数据库上使用这些算法。 Riak 似乎使用 CRDT。 OT 是否也可以用于同步数据库的节点并替代 Paxos/Zab/Raft?
最佳答案
这两种方法的相似之处在于它们都提供最终一致性。不同之处在于他们如何做。一种看待它的方式是:
你是对的,OT 主要用于文本并且确实早于 CRDT,但是 research表明:
many OT algorithms in the literature do not satisfy convergence properties unlike what was stated by their authors
换句话说,CRDT 合并是可交换的,而 OT 转换函数有时不是。
OTs are generally complex and non-scalable
有不同类型的 CRDT(集合、计数器等)适用于不同类型的问题。有些是专为文本编辑而设计的。例如,Treedoc - A commutative replicated data type for cooperative editing .
关于algorithm - OT 和 CRDT 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26694359/
虽然我已经研究过相关文献(例如 CAP 定理、CRDT)并实现了一些 POC 以允许水平扩展我的应用程序,但我对分布式数据库相当陌生。 然而,现在我面临一个具有挑战性的问题。为了水平扩展应用程序,服务
什么时候使用CRDT之类的东西代替paxos或Raft是个好主意? 最佳答案 如果可以使用CRDT之类的方法,请这样做。您应该获得更好的性能。它还启用了有趣的用例,例如脱机工作然后再合并。但是,并非总
如何使用 Gun 创建 CRDT? 例如,如果我想实现一个只增长数组,其中每个元素都指向下一个元素,我该如何解决冲突? 为简化起见,让我们创建一个 Alice 和 Bob 合作的场景。 数组包含 3
谁能简单解释一下 Operational Transform 和 CRDT 之间的主要区别? 据我了解,这两种算法都允许数据在分布式系统的不同节点上无冲突地聚合。 您会在哪个用例中使用哪种算法?据我了
我在配置 CRDT 存储桶类型和使用 bitcask 后端时遇到问题。我希望能够使用设置类型并保留 bitcask 过期的功能。 如果不指定后端,我可以创建和使用存储桶类型 sudo riak-adm
我想实现 Logoot对于最终收敛的 P2P 文本编辑,我遇到了一些问题。 我对 Logoot 的理解是,对象(原论文中的文本行,但可以是字符或单词)之间的间隔可以无限分割,因为标识符是无限的。这意味
以多人网络游戏为例。您立即就会遇到在网络上复制和协调共享状态的问题。 似乎有多种工具针对此问题的某个方面,其中两个似乎有重叠: Conflict-free Replicated Data Types
以多人网络游戏为例。您立即就会遇到在网络上复制和协调共享状态的问题。 似乎有多种工具针对此问题的某个方面,其中两个似乎有重叠: Conflict-free Replicated Data Types
我是一名优秀的程序员,十分优秀!