1

我对(delta)crdt很陌生。据我了解,delta crdt 保持“全局”(最终一致)状态和 delta 状态。它偶尔会将增量部分(有时是完整状态)发送到其他副本。当所有副本都看到更改时,其他一些 crdt 算法可以垃圾收集墓碑。我的问题是,是否有可能(并且是否有意义)合并这两件事?

  • 保持增量是本地增量和从其他副本接收到的增量的联合
  • 将合并的增量发送到一些副本
  • 在接收 delta 时,它也会合并到 global 和 delta 状态。如果所有副本都看到了操作,则清除墓碑。

一些文章:

我的理论是,副本将发送较小的增量而不是整个状态,因此带宽要求是有限的,并且墓碑的大小(以及内存要求)也将受到限制。有没有关于 delta-crdt 和 tombstone 垃圾收集的好教程?我读过一些原始文章,它们并不那么容易理解。

我也找不到太多关于如何将增量发送到副本的细节。(将所有 delta 发送到所有副本似乎有点矫枉过正,而且不是太理想)。我的基本想法是保留副本之间连接的拓扑(crdt)图。在增量传播期间,此图用于构建一些“最佳”拓扑,其中每个副本发送到(最多 2 个)其他副本。如果图拓扑显示某些副本处于非活动状态,则其他副本会尝试找到到非活动副本的“新路线”。它可以将副本标记为已断开连接。当一个副本出现时,它可以从某个其他副本获得完整状态,并使其成为这个“有机”最终一致拓扑图的一部分。

所以我很新,欢迎提供任何介绍性信息。

谢谢,gzp

4

0 回答 0