摘要
本文定义了一个新的一致性模型: 具有收敛冲突处理的因果一致性模型
根据该模型,设计并实现了一个KV存储:COPS(Clustering Of Order-Preserving Servers,保序服务器集群)。COPS 的核心方法是在公开写入之前跟踪并显式检查本地集群中是否满足键之间的因果依赖关系。此外,论文还实现了具有事务一致性的KV存储:COPS-GT。
COPS 在本地先行执行命令,然后后台以 Causal + 一致性的顺序跨数据中心复制数据
COPS-GT 通过无锁的方式实现事务的功能, 而且是非阻塞的,并且最多接受两轮并行的数据中心内请求。但COPS-GT牺牲了一部分鲁棒性,增添了一下负载的负担
截止论文发表,COPS是第一个实现Causal + 一致性的可扩展系统
背景及相关定义
分布式数据库遵守CAP理论,应对当今网络存储需求,现代数据库需要满足以下特性
- Available
- Low Latency
- Partition-tolerance
- high Scalability
简称:ALPS 系统,ALPS系统必须牺牲强一致性,但在这种情况下,因果一致性满足该限制。在因果一致性之外,本文定义 具有收敛冲突处理的一致性模型,称之为Causal +,这是本论文首次定义该概念,之前已经出现过满足该定义的论文,本文在定义该术语之外,还实现了可扩展的因果一致性
Causal + 一致性的聚合冲突处理组件可确保副本永远不会出现分歧,并且对同一密钥的冲突更新在所有站点上得到相同的处理。 当与因果一致性相结合时,此属性可确保客户端仅看到逐渐更新的密钥版本。 相比之下,最终一致的系统可能会暴露无序的版本。
可扩展的因果一致性:COPS之前的系统,要求数据中心配置、机器数量等要求一致,而存储在COPS的数据可以分布在任意大小的数据中心,而且依赖项(或者事务)可以分布在数据中心的许多服务器上。
**数据中心:**每个数据中心,包括前端服务器和后端服务器,以及存储数据的数据库
简化KV 数据库的操作:Get(key) = value, Put(Key, Value)
Causal + consistency
CAUSAL+ CONSISTENCY:causal consistency with convergent conflict handling
定义潜在因果关系: ⇝ \rightsquigarrow ⇝
三个潜在因果关系的规则
- Execution Thread:同一线程中的两个操作a,b ,如果a先于b发生,则 a ⇝ b a \rightsquigarrow b a⇝b
- Gets From: 如果a是put操作,然后b是返回被a写入的值的get函数,则 a ⇝ b a \rightsquigarrow b a⇝b
- Transitivity:对于操作a,b,c,如果 a ⇝ b a \rightsquigarrow b a⇝b, b ⇝ c b \rightsquigarrow c b⇝c,则 a ⇝ c a \rightsquigarrow c a⇝c
这些规则在同一执行线程内的操作之间以及其执行线程通过数据存储交互的操作之间建立潜在的因果关系。在本论文的模型中,不允许直接使用线程通信,而是使用数据存储的方式进行通信
为什么需要Causal+ consistenct:
因为并发操作不遵守因果一致性, 两个不相关的操作对同一Key进行写入,就会导致冲突
收敛冲突处理要求在所有副本上使用处理函数 H 以相同的方式处理所有冲突的 put操作。
常见的两种处理方法:
-
last-writer-wins rule:Thomas’ write rule
-
标记冲突,使用其他方式处理:例如Coda系统中人工交互;或者Bayou系统和Dynamo系统中编程处理
一致性分级
线性一致性 > 顺序一致性 > Causal+ 一致性 > 因果一致性 > FIFO一致性 >> 单独键顺序一致性(Per-key sequential consistency)> 最终一致性
Causal+ in COPS
在COPS系统中使用了两个抽象:dependencies和version,以此帮助推理因果+一致性
每个key都有自己的version: k e y v e r s i o n key_{version} keyversion
如果 x i ⇝ y j x_i\rightsquigarrow y_j xi⇝y

本文定义了具有收敛冲突处理的因果一致性模型Causal +,并据此设计实现了KV存储COPS和具有事务一致性的COPS - GT。介绍了Causal +一致性规则、COPS系统设计,包括组件、存储实现、客户端库等,还阐述了垃圾回收、容错、冲突探测机制,最后推广了相关论文笔记仓库。
最低0.47元/天 解锁文章
4860

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



