如何防止云计算迁移的回旋效应
最近的调查研究表明,多达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)上的数据集,通常也有一部分数据更适合于可用性模型。
最常见的可用性存储系统类型是对象存储,这是所有云计算提供商为其负担得起的存储层所使用的设计。对象存储成本低,可扩展到数千个节点。在广泛的地理区域分布数据也很容易,使数据更易于访问和恢复。
使用CAP来识别云计算兼容的应用程序
鉴于对CAP的了解以及从云计算提供商那里获得的最具成本效益的存储是以可用性为中心的认识,组织应该能够更容易地确定哪些应用程序最适合在云端使用。
第一步是确定一致性不成问题的数据集,一个主要的例子是非活动或休眠的非结构化数据集。典型使用的网络附属存储(NAS)容量的80%以上是非活动数据。这些整个数据集应该转移到侧重于可用性的成本更低的分布式存储上。将这些数据转移到以可用性为中心的存储中不仅会降低保留这些数据的成本,而且这些类型的存储架构更适合长期保存。企业面临的挑战不仅是识别不活动的数据并将这些数据转移到云端,而且还要确保当数据再次需要时,用户仍然可以使用这些数据。
下一步是确定在活动数据集内是否还存在也处于休眠状态的子集。问题是识别和移动这些数据子集更加困难。最后一步是确定非常活跃的数据,并需要在整个存储架构中保持一致的表示。
将一致性敏感应用程序迁移到云端
虽然三种类型的数据可以人工识别和移动,但这个过程非常耗时,需要IT部门的持续监督。人为识别的过程(甚至一些声称自动化识别的项目)意味着需要管理单独的存储容器,用于对于一致性敏感的活动数据。
另一种方法是利用云感知文件系统,该系统将根据访问模式自动分类数据并将其放置在最合适的存储类型上。该解决方案可以替代内部部署的高性能网络附属存储(NAS),其存储空间更小,旨在容纳一致性敏感数据。它应该自动地将数据在本地部署和云计算存储之间进行IT监督,而不需要IT人员的干预。同时,它应该将本地存储和云计算存储与全局文件系统进行叠加,以便用户始终可以通过相同的路径和协议访问数据,从而实现对云端的无缝访问。
云计算的一致性
云感知文件系统还应该在云端运行,这使得组织可以无缝地将应用程序移动到云端,而无需更改它们。应用程序可以运行在云计算提供商的一致性存储版本上,但文件系统允许将投资降到最低,因为它会自动将数据移动到提供商成本更低的对象存储层,而不需要保持一致性。
当本地存储和云计算存储与云文件系统数据相结合,应用程序可以在本地部署和云端之间自由移动时,根据企业的需求,云计算存储可以用作存档,作为一个永久运行应用程序的地方。