分布式一致性CRDTs的几个框架库推荐 - josephg


CRDT (无冲突复制数据类型)是一种花哨的编程工具,可以让多个用户同时编辑相同的数据。它们让您可以毫无延迟地在本地工作。(您甚至不必在线)。当您与其他用户和设备同步时,一切都会神奇地同步并最终保持一致。CRDT 最好的部分是它们可以完成所有这些工作,甚至不需要云中的中央计算机来监视和控制一切。

  • 如果您今天要构建基于文档的协作应用程序,则应该使用Yjs。Yjs 具有稳定的性能、低内存使用和强大的支持。如果您需要帮助在您的应用程序中实现 Yjs,Kevin Jahns 有时会接受金钱以换取帮助将 Yjs 集成到各种应用程序中。他用它来资助全职从事 Yjs(和相关工作)的工作。Yjs 已经运行得很快,很快它应该会变得更快。
  • Automerge(一个流行的 CRDT,由一个流行的研究人员编写)需要将近 5 分钟才能运行。automerge 团队也很棒。我和他们就这些问题进行了一些很好的对话。他们将性能作为 2021 年的第一期,并计划使用许多这些技巧来加快自动合并。当您阅读本文时,它可能已经快得多了。
  • 有一个新的实现:Diamond,可以在 56 毫秒内处理相同的编辑跟踪。那是 0.056 秒,快了 5000 多倍。这是我从优化工作中获得的最大速度提升 。
  • 如果你想要数据库语义而不是文档语义,据我所知,还没有人在 CRDT 之上做得很好。您可以使用ShareDB,它使用 OT。我多年前编写了 ShareDB,它使用良好、维护良好并经过实战测试。

Diamond真的很快,但在我与 Yjs 和 Automerge 具有同等功能之前还有很多工作要做。一个好的 CRDT 库除了操作速度之外还有很多。CRDT 库还需要支持二进制编码、网络协议、非列表数据结构、存在(光标位置)、编辑器绑定等。在撰写本文时,Diamond几乎没有做这些。
展望未来,我对Redwood感到兴奋——它支持 P2P 编辑并计划全面支持 CRDT。