最近的调查研究表明,多达50%的企业表示希望将业务从云计算迁移回数据中心,虽然这种回旋效应有很多原因,但缺乏数据一致性是最主要的原因之一。CAP定理描述了分布式存储系统只能提供三个要素中的两个:Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)。在考虑云计算迁移的应用时,必须应用CAP理论来判断云计算存储架构是否适合每个应用的需求。
理解CAP定理
CAP定理专注于分布式数据存储,这是AWS、谷歌云平台和微软Azure等云计算服务提供商所采用的主流设计。分布式数据存储由一系列称为节点的服务器构建而成。每个节点都有内部存储,当节点成簇时,它将成为一个全局存储池。当数据被写入存储时,通过复制每个对象或对象的子段的擦除编码来将数据分布在节点上。
CAP定理表明,分布式数据存储只能提供以下三个要素中的两个:Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)。
分区容错性是指分布式存储在网络出现故障时继续提供数据的能力,而故障将会导致节点之间任意数量的消息丢失或延迟。由于网络故障在全球基于云计算的任何存储服务中都是不可避免的,因此所有系统都必须提供分区容错。因此,在考虑云计算存储解决方案时,企业的IT部门必须在一致性和可用性之间进行选择。
一致性意味着系统必须在应用程序或相应的过程开展之前确认每个写入操作。确认的必要性也适用于数据保护。例如,一致的数据存储必须将对象复制到另一个节点,并在确认总体写入之前验证完成。提供一致的模型是昂贵的,尤其是在分布式体系结构中,因为在任何给定的时间点,所有节点都必须具有相同的数据。提供一致性不会影响分布式存储中的应用程序性能,这意味着需要高速的节点内部网络、节点之间的距离和高性能存储介质。即使节点本身也比较昂贵,这样就需要更快地处理数据。
尽管成本高昂,但注重一致性是绝对必要的。例如,支持金融机构的存储基础设施需要确保所有节点始终保持同步。如果成交了一百万美元的交易,而这些节点没有更新,则会出现严重的问题。更普遍的情况是,如果所有数据在整个存储基础设施中并不总是同步的,那么期望一致性的应用程序很容易被破坏。
可用性的关注点
由于与建立一致的分布式数据存储的成本相关,大多数云计算提供商专注于可用性或最终一致的模型。可用性的关注点意味着当初始写入发生时,在后台通过复制或完成数据的擦除编码来将延迟的应答延迟到满足数据保护要求。这取决于其他节点的位置,一致的时间范围可以从几秒到几分钟。而高交易环境可能永远不会达到一致的状态。
可用性的关注点有许多优点,其中主要的一个优点是降低成本。节点之间的联网、节点中的存储介质以及节点本身的处理能力不需要在一致性关注的分布式存储系统的能力范围内执行。
此外,可用性关注点是数据分发的理想选择。无论是为了防范区域性灾难,还是确保数据在地理位置上尽可能接近用户,可用性关注点都可以实现分发,而无需为原始用户或应用程序提供性能。
将CAP应用到NAS和对象存储(云存储)
考虑迁移到云端的本地应用程序通常使用网络附属存储(NAS)。这些网络附属存储(NAS)系统在传统上都有一致性的特点,尽管它们中的大部分数据在一个不太一致但更可用的设计中工作得很好。为了保持一致性,网络附属存储(NAS)系统通常通过紧密耦合的集群和相对较小的节点计数提供扩展功能(即通过单个节点的所有数据访问)或非常有限的扩展。这些网络附属存储(NAS)系统提供对共享存储的低延迟访问,并且可以保持严格的一致性。他们在应用程序确认或传统的POSIX文件系统语义之前利用读写后验证。
网络附属存储(NAS)系统受到其他存储系统的一致性的影响:高成本、有限的规模和有限的可用性。虽然大多数网络附属存储(NAS)系统提供复制以进行灾难恢复,但是这种复制是异步完成的(最终会变得一致)。这个过程对于网络性能比较敏感,几乎总是一个相同的系统,而二次系统最终成为主系统的镜像。
这个机会并不是网络附属存储(NAS)上的所有数据都需要一致的体系结构的功能,实际上,网络附属存储(NAS)上的大部分数据在专注于可用性的体系结构上。即使是需要一致性的网络附属存储(NAS)上的数据集,通常也有一部分数据更适合于可用性模型。