所谓协同编辑是指多人同时可以修改同一个文档、文件或者代码等等之类
目前协同编辑比较出名的开源库有shareJsot.js
其中处理冲突的方案有两种
1.阻止冲突,一旦有人在编辑这个版块,另一个人不可以编辑(体验不太好)
2.OT/CRDT,控制并发和冲突

OT(Operational transformation)

image.png

CRDT(Conflict-free replicated data type )

  • 基于状态:即将各个节点之间的CRDT数据直接进行合并,所有节点都能最终合并到同一个状态,数据合并的顺序不会影响到最终的结果。
  • 基于操作:将每一次对数据的操作通知给其他节点。只要节点知道了对数据的所有操作(收到操作的顺序可以是任意的),就能合并到同一个状态。

OT 和 CRDT 区别
OT主要用于文本,CRDT 不仅仅应用在协同编辑,还有分布式系统的最终一致性上也有应用。OT操作必须通过服务器的转换才可以合并,而 CRDT 由于其数据结构特性,不通过服务器也可以合并。

参考:https://zhuanlan.zhihu.com/p/48229762