问题域/PD-270

协作编辑

Real-time Collaborative Editing

基于CRDT的多用户实时协作编辑系统

子问题

1.WebSocket连接管理

2.CRDT冲突解决

3.画布状态同步

4.编辑器协同

5.双轨同步协议选型与桥接

6.事务化状态快照与版本压缩

7.Singleflight缓存击穿防护

8.前端离线状态与多定时器协调

各项目的解法1 solutions

Signals

横向对比

维度Refly
同步协议双轨:文档用 Yjs CRDT WebSocket,画布用事务化 HTTP 轮询
冲突解决文档 CRDT 自动合并;画布三级检测(版本→事务→节点ID)+ 用户选择
离线支持IndexedDB 本地状态 + 200ms 防抖写入 + 后台 2s/3s 双定时器同步
状态持久化OSS 持久化 + Redis write-through 缓存 + singleflight 防击穿
版本管理100 条事务或 1 小时自动快照,支持 undo/redo 事务撤销
并发控制Redis 分布式锁 + 指数退避重试 + pLimit(5) 并发限制

最佳实践

1.使用Yjs CRDT协议而非OT实现无冲突同步

2.图结构数据用事务化diff比CRDT更自然高效

3.Redis write-through+singleflight组合防缓存击穿

4.版本快照按事务数+时间双阈值触发压缩