在动态网络下实现分布式共享存储

摘要:本文介绍了分布式环境下实现共享内存模型会遇到的各类问题和挑战,并针对不一样问题介绍多种算法的优劣性。本文是对现阶段该领域研究现状的整体介绍,经过本文能了解动态分布式共享内存研究的前沿情况、挑战与机遇。算法

共享内存系统是普通单机程序开发人员熟悉的开发范式,经过简单的使用读、写命令,就能确保将咱们须要的值在内存中进行输入和读取。数据的一致性等问题,在单机系统中,开发人员根本不须要考虑。然而在分布式环境下,因为数据出现多个副本,且副本的数量有可能动态增长或减小,要实现一样的功能,又要保证读写性能,就须要新的算法和实现。本文介绍了分布式环境下实现共享内存模型会遇到的问题和挑战,针对不一样问题,介绍多种算法,并比较其优劣性。本文是对现阶段该领域研究现状的整体介绍,经过阅读该文,咱们能了解动态分布式共享内存研究的前沿情况,了解该领域的挑战与机遇。服务器

所谓3R(Reading、wRiting、aRithmetic)依然是大多数人类智力活动的基础,同时,3R也是现代计算科技的重要组成部分。实际上,不管图灵机仍是冯 · 诺依曼体系,都遵循读、写、算模型,全部投入实际使用的单处理器实现,都基于3R进行工做。随着网络科技的发展,通讯虽然成为了重要系统活动,但在高层次的抽象上,使用读、写、算模型进行思考仍然显然更为天然。网络

理想的系统必须具有必定的容错性,同时系统必须支持大量并发访问。惟一能保证可用性的方法只有冗余,也就是说使用多个服务器制造对象内容的副本。因为全部节点都有可能被更换,所以存储系统必须提供数据的实时无缝迁移。并发

由数据副本带来的主要问题是一致性问题,一致性的概念经过原子性或者等效的线性一致性来实现。异步

原子性是最强大的一致性概念,同时实现代价也比较高,Eric Brewer的CAP定理已证实没有分布式系统能够彻底同时实现一致性、可用性、分区容忍性;尽管如此,在某些限定状况下,实现简单和直观的原子一致性仍然很是必要。分布式

基础工具:静态化网络系统条件下的共享内存系统ide

静态环境下的方法能够做为咱们动态系统的基础工具,然而为静态系统设计的算法不能被直接用于动态系统,由于他们缺少处理拷贝集合变化的能力。工具

可以处理共享内存的ABD算法实现了原子内存,拷贝的同时提高了容错能力和可用性。给定的总拷贝数是n,系统可以容忍 f 个拷贝失效,n>2f。性能

在动态网络环境中模拟共享内存系统设计

动态系统的节点可能随时退出或加入服务。ABD算法不能应用在这个场景中,由于它是创建在原有的拷贝主机集合一直可用的基础上。为了可以在动态环境中使用相似ABD方法,必需要提供方法对复制主机的集合进行管理,并保证阅读者和写入者能访问可用的集合。

咱们首先从获取共识的问题开始,由于它经过创建共同的操做顺序,为实现内存服务的原子性提供了天然的基础。其次,咱们将提出组通讯服务(GCS)解决方案:使用强通讯原语,好比彻底排序广播来对操做排序。最后,咱们聚焦一些方法,这些方法经过用显式的拷贝主机集合管理,能够用于扩展ABD算法至动态环境。

共识:在分布式环境中如何协调并达成一致是计算机科学的基本问题。在分布式环境下达成一致的问题被称做共识问题。因为不一样节点提供了多个参考值,一组进程须要对该值达成一致。

共识算法能够应用于原子化的数据服务,咱们只须要让参与者对全局全部操做顺序取得一致。但对于每一个操做都使用共识是一个笨拙的实现方式,特别是一些干扰会延迟甚至阻止操做终止。

组通讯服务(GCS):在分布式系统中最重要的基础材料就是GCS,GCS使得在不一样节点上运行的操做共同以组的方式工做。操做经过GCS多播服务发送消息到全部组成员以实现分组协做。GCS负责保证消息传输的顺序和可靠性。

GCS经过基于视图及虚拟同步技术的有序组播来实现动态网络的共享内存。这种解决方案的主要缺点是对大多数GCS实现,造成一个新的视图须要大量时间,即便只有一个节点故障,性能降低也很是明显。

dynastore算法:dynastore是多写入者/多阅读者动态原子存储服务的实现。它集成了ABD算法,并容许副本主机集合重构,并且不须要共识的使用。另外一方面,向配置中增长和删除单个节点,可能致使较大开销,与之相比,直接用一个完整的配置替换原有配置性能可能更高。因此读写操做的延迟更依赖重构的速度。

从理论到实践

咱们在这里介绍并评估两个实现。第一是从Rambo算法思想派生的分布式磁盘阵列。第二是基于dynastore算法的实现。

FAB:联合砖块阵列(FAB)是由HP实验室开发和评估的存储系统,FAB系统中使用的计算机被称为“砖块(brick)”,一般配备普通商用的磁盘和网络接口。为实现分布,FAB将存储切为若干逻辑存储块,使用擦除码(erasure-coding)算法复制每一个逻辑块到bricks子集。

对FAB实现的评估结果代表,FAB性能相似于集中式的解决方案,同时能提供连续的服务和高可用性。

ynadisk:ynadisk是用于评估的dynastore算法实现,其设计支持在无共识的条件下从新配置服务,或采用共识进行部分同步。

评估结果代表,在无重构的状况下,两个版本算法有着相似的读写延迟,当多个重构同时发生时,异步无共识方法的延迟有明显增长。

讨论

本文中提到的方法只是众多分布式存储服务实现方法的表明。这些方法,每个都有其优缺点。基于共识的解决方案,虽然概念简单,但一般须要协调员的参与以获取共识,其性能可能会严重依赖于可用的协调员。组通讯服务(GCS)是构建高可用性低延迟网络中的有效工具,但当视图发生变化时开销很高,理论上更加优雅的方法,好比dynastore、Rambo、GeoQuorums,虽然实现更复杂,但具备更大的灵活性。

什么时候进行重构也是必须解决的挑战。例如,在任意一个节点加入或退出服务都要求进行重构。但当节点不断加入和离开服务时,这种方法可能会形成没必要要的开销。另外一种方法是把决策权交给另外一个分布式服务,经过观察和推理性预判,找到重构的最佳时机。

一致性存储系统一直是活跃的研究方向,一旦出现具备优越的容错性以及高性能的动态存储系统,将在构建复杂的分布式应用程序中发挥重要的做用。分布式应用程序对一致性和高性能的需求将不断催生对原子的读/写存储器需求。(译者:朱燚)

本文选编自CACM 2014年6月刊《Implementing Distributed Shared Memory for Dynamic Networks》。

原文连接:http://cacm.acm.org/magazines/2014/6/175173-implementing-distributed-shared-memory-for-dynamic-networks/fulltext 。