最近负责大象团队的多人实时协作文档业务,需求覆盖富文本、Excel、脑图、流程图和 Markdown 五种文档类型。前端实现主要涉及两部分:
- 编辑器开发。
- 协作模型。并发操作的处理出现错误时,客户端可能得到不一致的协作结果。
我主要开发富文本、Excel 和 Markdown 编辑器,相关实现另文说明;本文讨论实时协作。
常见的协作方案包括 Operational Transformation(后文简称 OT)和 CRDT。Google Docs 是较早大规模商业应用实时协作文档的产品之一,采用 OT。此后许多协作产品也基于 OT 开发。CRDT 也包含基于操作的实现;在对等网络中,CRDT 通常更适合。
OT 通常需要中央服务器为操作排序。中央服务器将各客户端的并发操作按顺序应用到文档快照上。
