广泛用于协作编辑中的冲突解决的技术,一种【无锁】、【非阻塞】的冲突解决方法。若协作者之间的操作冲突,OT会解析冲突并将正确的汇聚状态推给最终用户。因此,OT为用户提供一致性。
OT 使用位置索引方法执行操作来解析上面讨论的那些冲突。通过保持交换律、幂等性来解决上述问题。
OT示例:
基于 OT 的协作编辑器在满足以下两个属性时一致:
示例描绘来自站点 ID 123e4567-e89b-12d3 的用户在 PositionalIndex 为 1.5 的位置插入一个值为 A 的字符。尽管添加了新字符,但使用小数索引保留了现有字符的位置索引。因此,避免了操作之间的顺序依赖性。如下所示,在 O 和 T 之间插入()并没有影响 T 的位置。
防止操作之间的顺序依赖性:
CRDT 确保用户之间的强一致性。即使一些用户处于离线状态,当他们重新联机时,最终用户处的本地副本也将汇聚。
尽管众所周知的在线编辑平台如 Google 文档、Etherpad 和 Firepad 使用 OT,但 CRDT 使协作文档编辑中的并发和一致性变得容易。事实上,使用 CRDT,可以实现无服务器点对点协作文档编辑服务。
注意
OT 和 CRDT 是协作编辑中冲突解决的良好解决方案,但我们使用 WebSockets 可以突出显示协作者的光标。其他用户将预期协作者的下一个操作的位置,并自然避免冲突。
7 评估
一致性
操作转换(OT)和冲突不定决议数据类型(CRDT)在文档中实现冲突解决的强一致性。
时间序列数据库能保留事件的顺序。一旦 OT 或 CRDT 解析了任何冲突,最终结果就保存在数据库。这有助我们在单个操作方面实现一致性。
在IDC内的不同服务器之间保持文档状态的一致性。要在同一IDC内同时复制更新后的文档状态,可使用 Gossip 协议这样的点对点协议。这不仅提高一致性,还会提高可用性。
可用性