返回专题

专题 2021

多人协作算法

多人协作算法 相关笔记

Notebook
本文目录11
  1. OT
  2. 简介
  3. 优点
  4. 缺点
  5. 适用场景
  6. CRDT
  7. 简介
  8. 优点
  9. 缺点
  10. 适用场景
  11. References

源页面:

标签:

  • 题目
  • Collaboration

页面摘要:

  • 直接覆盖
  • 锁机制
  • diff-patch
  • Operational Transformation(OT)
  • Conflict-free Replicated Data Type(CRDT)

OT

简介

OT 通过算法控制保证数据一致性:操作通过发送到服务端,一旦收到就会进行转换。

首先用户的操作会被分解成一个个的原子操作。当用户操作之后,发送当前用户操作给服务器,由服务器根据其他人的操作记录进行转换,再分别转换为每个用户的原子操作进行分发,每个客户端执行分发下来的操作来保证同一份数据的一致性。

优点

  • 客户端压力小
  • 满足用户的预期

缺点

  • 中央服务器依赖,压力较大
  • 对网络要求更高,如果用户网络出现异常,则服务端转换就会出现问题
  • 根据原子操作拆分的方式不同,算法实现也不同,复杂性高

适用场景

  • 可以拆分的原子操作较少的场景,例如在线文档、富文本编辑器
  • 需要有人对协作算法十分熟悉

CRDT

简介

CRDT 通过数据结构保证数据一致性:操作是在本地 CRDT 上进行的,它的状态通过网络发送并与副本的状态合并。

CRDT 全称为 Conflict-free Replicated Data Type,即无冲突复制数据类型,是一种基于数据结构的无冲突复制数据类型算法,它通过数据结构的合并来实现数据的一致性。

在 CRDT 算法中,每个用户对数据的修改都会被记录下来,并在其他用户的客户端进行合并,以实现数据的一致性。CRDT 的优点在于它可以适用于大规模分布式系统,并且不需要中心化服务器进行协同调度;但在处理复杂操作时可能会存在合并冲突,需要设计复杂的合并函数来解决。

优点

  • 去中心化,减少对服务器的依赖,任意客户端可以自行独立解决问题
  • 性能较好,在复杂网络中表现更加稳健,可以容忍较高延迟
  • 支持更广泛的数据类型

缺点

  • 资源消耗更高,需要更多内存和存储来跟踪状态变更历史
  • 某些实现为了合并状态和解决冲突,需要复杂算法
  • 垃圾收集更难,历史数据不容易有效清理
  • 为了保证副本同步,可能需要发送大量更新消息

适用场景

  • 不依赖编辑器实现,支持对接任意编辑器实现
  • 适用于不了解多人协作算法的团队

References

  • 原页面末尾为书签引用,Notion 导出未提供可读标题,未继续展开。
返回首页
上一篇原理学习(操作系统、W3C、Chrome)下一篇多端低代码编辑器设想

Discussion

留言与讨论

想法、补充和不同意见都欢迎。