分散式一致性CRDTs的幾個框架庫推薦 - josephg

banq發表於2021-08-06

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。

相關文章