关于CRDT相关的一些理论知识
全称:
-
Conflict-free Replicated Data Type(无冲突的复制数据类型)
由来:
-
在分布式系统中,不同节点之间的数据复制存在一致性问题(强一致性问题),CRDT作为一种理论来指导如何将原有数据结构设计成在数据复制过程中通向最终一致性的一种新的数据结构。
最终结果:
-
确保操作的独立性并且操作彼此不会冲突从而避免协调。
相关理论:
-
CAP:Consistency, Availability, Partition
-
混合了分布式特性(如一致性和可用性)与系统模型(网络可靠性指标)。
-
-
CAC: Consistency, Availability,Convergence
-
收敛性:是指一种实现能力,它能确保被一个节点写入的数据被另外一个读取,收敛性描述的是一个节点能够读取到其他节点的写入时的一系列环境条件(如网络,本地时钟等)
-
一个简单的收敛性其实是一种最终一致性,如果一个系统停止了接受写入和节点之间足够的通讯发生,那么这个系统就会达到一种状态,这种状态是,对于任何对象o,o的读取会在所有节点上返回同样的值。
-
收敛性是指所有节点都同意是一种可取的有用的状态。
-
通过引入收敛性,我们可以在安全(一致性)和灵活性(可用与收敛)之间取得平衡。
-
-
因果一致性
-
遵循‘happens-before’ ,即写在读之前发生,实时因果一致性(RTC)是增加了时间不可逆的约束。
-

约定遵循下面三个规则表示潜在一致性,用符号表达 ->:
-
在同一执行线程:如果a 和 b 是一个执行线程中的两个操作,如果操作a发生在操作b之前,那么a ->b;
-
不同线程Gets From. 如果 a是一个put放入操作,且b是一个get操作,能返回被a放入的写操作结果值,那么a->b;
-
传递性Transitivity. 对于操作a, b, 和 c, if a -> b 且 b -> c, 那么 a -> c.
-
-
因果一致性并不对并发操作排序,如果 a不在b之前发生,b也不在a之前发生,那么a 和b是并发的,a和b是两个不相关的操作,那么它们在分布式系统中复制就不必遵循任何顺序了,这样就避免了在它们之间使用因果这种串行化方式。
-
对于使用相同的key值进行put写操作,使用last-writer-win策略,即在初始存储时使用一个时间戳为每次更新分配唯一的版本号,以此来为每个key的所有写操作维护全局的顺序。
这些规则在同一个线程内的操作之间以及在与数据存储交互的不同线程的操作之间创建了潜在的因果关系,这个模型,并不允许线程直接通讯,而是通过数据存储进行通讯。
-
2233

被折叠的 条评论
为什么被折叠?



