什么是可交换复制数据类型,以及如何在不需要共识的情况下进行复制?

时间:2015-10-19 17:01:45

标签: replication distributed

我正在尝试对交换式复制数据类型进行研究,并且没有发现任何好的定义没有被大量的技术术语所困扰,这使得很难理解这是如何允许复制数据的没有使用共识的分布式环境。

1 个答案:

答案 0 :(得分:0)

在Layman的术语中,您可以将CRDT视为如下:

CRDTS是一种数据类型,用于在没有显式同步的情况下在分布式环境中实现强大的最终一致性。 CRDT的吸引人之处在于它们既没有冲突又不需要同步,起初有点令人困惑,因为你认为必须有某种同步,例如,如果我写的话会发生什么2然后3到副本和副本A接收更新3之前2和副本B收到正确的顺序,前2然后3,那么我们有冲突吗?

CRDT的关键是它们被划分为特定的操作,在这种情况下,上面的场景不会产生任何冲突。最简单的方案是增加聚合值,如果A和B只是添加所有传入值,它们最终都会以值5结束,而不会发生冲突,仅依赖于最终一致性的弱假设。具体而言,操作要求通常是操作是可交换的,操作不会违反因果顺序。

基本上,CRDT保证所有并发操作相互通信。

当然,如果CRDT只能实现简单的求和,那就不会很有趣了。然而,事实证明,聪明的人已经开发了CRDT算法,用于更有用的事情,例如编辑共享文档(参见" CRDT Logoot"),仅限成长集等。

但是,请记住,通过消除对共识的需求,CRDT本身就是有限的,并且有很多简单的事情是他们无法做到的。

希望这个描述对你有意义,对于更准确的描述,我认为数学定义是最直观的。