【问题标题】:How does Raft compare with CRDT for collaborative editing?Raft 与 CRDT 在协作编辑方面如何比较?
【发布时间】:2021-05-02 21:57:25
【问题描述】:

当状态只是一个可以包含数组的 JSON blob 时,我试图了解 Raft 在协作编辑方面的优势。

我的直觉是 Raft 是为安全而构建的,而 CRDT 是为速度而构建的(牺牲可用性)。很想获得更多关于使用 Raft 进行协作编辑的可行性的意见。

【问题讨论】:

    标签: multiplayer distributed-system raft crdt collaborative-editing


    【解决方案1】:

    首先,Raft 要求,所有写入必须通过同一个参与者(领导者)并在提交之前以相同的顺序存在。这意味着:

    1. 如果您无法从您的计算机访问当前领导者,您将无法提交任何写入。
    2. 为了确保总订单,您需要等待领导者的提交确认,这可能需要超过 1 次往返。对于协作编辑情况,这意味着会削弱应用程序的响应能力,因为在远程服务器确认之前的更新(例如按键)之前,您无法提交下一次更新。
    3. If your leader will fail, you'll need to wait until the next one is elected before any further updates could be committed.
    4. 存在一组特定的冲突解决问题,Raft 并不真正知道如何处理。最简单的例子:两个人在光标下在同一个位置打字——你很容易得到两个人的文本被交错(例如,在同一个位置 A 写 'hello',B 写'world',结果你的文本可以是这些的任何排列,例如。'hwelolrldo')。

    除了其他问题(例如会员资格和重新交付)之外,Raft 本身并不能为上述问题提供有价值的解决方案。你需要自己解决它们。

    【讨论】:

      猜你喜欢
      • 2012-06-30
      • 2012-08-01
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      相关资源
      最近更新 更多