我错了。无冲突复制数据类型(CRDT)是未来

💡 原文英文,约2000词,阅读约需8分钟。
📝

内容提要

文章讨论了无冲突复制数据类型(CRDT)在实时编辑中的潜力,认为其将取代传统的操作变换(OT)方法。作者回顾了在Google Wave和ShareJS上的工作,指出OT依赖中心化服务器的局限性。尽管CRDT起初速度较慢,但随着技术进步,其性能和功能不断提升。未来的实时协作编辑需要高质量的CRDT实现,以满足去中心化软件的需求。

🔎

延伸解读

OT 的中心化瓶颈

文章指出,OT 依赖中心化服务器来全局排序操作,这导致 Google Docs 在文档被广泛分享时出现“文档过载”而禁用编辑。作者在 Google Wave 中尝试用树状服务器结构实现联邦化,但复杂且充满 bug,最终未能稳定运行。这说明 OT 在去中心化场景下存在根本性局限。

CRDT 的进步与现状

CRDT 曾因速度慢、存储膨胀和功能缺失被作者否定,但近年已有显著改进。Martin Kleppmann 的列式编码可将文本存储开销降至 1.5-2 倍,Yjs 已实现该思路,100KB 文档仅占 160KB 磁盘或 3MB 内存。作者用 Rust 实现的 B 树 CRDT 原型达到每秒 600 万次编辑,表明性能差距已小于 Rust 与 JavaScript 的差距。

为何 CRDT 可能取代 OT

作者认为,OT 的所有功能都可以在 CRDT 中实现,反之则不然。例如 OT 支持对象移动,而目前尚无 CRDT 能直接支持,但可通过回放重放实现。CRDT 无需中心化真相源,更适合去中心化软件。即使中心化系统也能受益,因为 Google Docs 的扩展问题正源于 OT 的局限。

本地优先软件的意义

作者从哲学角度强调,中心化软件让用户的数据受制于他人服务器,而本地优先软件让数据留在用户设备上。Git 是典型例子:推送只是通知,仓库完全属于自己。CRDT 是实现这一愿景的关键技术,但还需要大量高质量实现,才能让本地优先软件成为默认。

❓

Q&A

无冲突复制数据类型(CRDT)是什么?

无冲突复制数据类型(CRDT)是一种允许实时编辑而无需中心化真相源的数据结构,旨在解决传统操作变换(OT)方法的局限性。

CRDT相比于传统的操作变换(OT)有哪些优势?

CRDT的优势在于它不依赖中心化服务器,能够实现去中心化的实时编辑,且随着技术进步,其性能和功能不断提升。

为什么传统的操作变换(OT)方法存在局限性?

OT方法依赖中心化服务器,这导致在高并发情况下可能出现性能瓶颈和编辑冲突,影响用户体验。

CRDT在实时协作编辑中的应用前景如何?

CRDT在实时协作编辑中具有广阔的应用前景,未来需要高质量的CRDT实现以满足去中心化软件的需求。

CRDT的性能如何随着技术进步而提升?

随着技术进步,现代CRDT的操作应用速度显著提高,存储效率也得到改善,能够处理更复杂的编辑任务。

未来的实时编辑软件需要哪些特性?

未来的实时编辑软件需要高质量的CRDT实现,以支持去中心化、快速响应和高效协作的需求。

🏷️

标签

➡️

继续阅读