什么是交换复制数据类型,以及它如何在不需要一致性的情况下进行复制



我正在尝试研究交换复制数据类型,但没有找到任何好的定义,这些定义没有陷入大量的技术术语,这使得很难理解它如何允许在不使用共识的情况下在分布式环境中复制数据。

用外行的话来说,你可以这样考虑crdt:

CRDTS是一种在分布式环境中实现强最终一致性的数据类型,无需显式同步。crdt的吸引人的属性是,它们都是无冲突的,不需要同步,这是有点令人困惑的,因为你会认为必须有某种同步,例如,如果我写2和3的副本和副本a接收更新3之前2和副本B接收正确的顺序,然后2然后3,然后我们有冲突?

CRDT的关键是它们被划分为特定的操作,在这种情况下,上述场景不会产生任何冲突。最简单的场景是增加聚合值,如果A和B只是将所有传入的值相加,它们最终都会得到值5,没有冲突,只依赖于最终一致性的弱假设。具体来说,操作要求通常是操作是可交换的,并且操作不违反因果顺序。

基本上,crdt保证所有并发操作彼此交换。

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

但是,请记住,通过消除对共识的需求,crdt本质上是有限的,并且有许多简单的事情它们不能做。

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

相关内容

最新更新