本文是《Stronger consistency and semantics for low-latency geo-replicated storage》的阅读笔记。
(未完成更新...)
背景
地理复制(Geo-replication)
如今大型的网络服务常常需要大规模数据存储,需要支持上百万的并行用户对数据进行操作。在这些系统中,数据中心往往会对数据进行完全备份,也就是在每一个数据中心中都存储全部的数据。比如Facebook会把所有用户信息存在每个数据中心中。像这样讲数据备份在不同地理位置的方式称为:地理复制(Geo-replication)。
地理复制有两个好处:容错和低延迟。一个地理位置的数据库挂掉了,其他的可以继续提供服务。用户可以选择离自己最近的那个服务。
数据分区
在大规模数据库中,每一个数据中心的数据会非常大,常常需要分布在上万的机器中,常用的一个技术叫做分区(sharding),就是把不同部分的数据房子啊不同的服务器中。当有新的机器增加时,就需要重新进行分区。所以总而言之,在不同地理区域的数据是重复的,每个地区的数据则是分区存放的。
为了达到更少的round trop time也就是RTT,也就会从用户发出请求到返回的网络延迟,最重要的就是要减少到达数据存储之间延迟。一种方式就是尽量从本地获取。如图所示:
Local-replica-only
从最近的地方读写是最快的。读从最近的数据中心读取,就不会去远程获取。写的是后也是在这个数据中心中更新,在更新远程数据中心之前就返回结果。这种设计称为“local-replica-only”数据库设计,就是为了减少远程获取,来得到数据中心之间RTT最短时间。然而这种“Local-replica-only”的设计往往会达不到强一致性。
Linearizability线性一致化
Linearizability是一种强一致性模型。也就是说如果写完之后,在另一个数据中心读取时,就需要有刚刚写的更新。所以理论上来说,低延迟和强一致性往往是trade-off的关系。
ALPS系统
通过CAP理论,我们已经知道,一个系统无法同时达到Consistency,Availability和Partition-tolerance。因此,现代的网络服务通常牺牲了强一致性来满足可用性和分区容忍性。这类系统可以命名为“ALPS系统”,满足可用性,低延迟,分区容忍和高可拓。
鉴于ALPS系统必须牺牲强一致性,我们就来探索一下在ALSP束缚下最强的一致性可以达到什么程度。这里,我们提出casual consistency with convergent conflict handling,也就是casual+一致性。