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

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

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

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

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

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

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

静态环境下的方法可以作为我们动态系统的基础工具,然而为静态系统设计的算法不能被直接用于动态系统,因为他们缺乏处理拷贝集合变化的能力。

能够处理共享内存的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 。

译文全文链接:http://blog.csdn.net/yizhu2000/article/details/37594703

在动态网络下实现分布式共享存储相关推荐

  1. Linux下搭建iSCSI共享存储详细步骤(服务器模拟IPSAN存储)

    一.简介 iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够 ...

  2. Linux下搭建iSCSI共享存储

    一.简介 iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够 ...

  3. 基于SpringBoot下使用分布式文件存储FastDFS

    一.FastDFS简介 1.1 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存 ...

  4. 动态网络下的极致隐匿?NA DFS去中心化存储协议助推NA(Nirvana)Chain成为企业级隐私网络

    在区块链的分布式环境中,各节点担任起处理数据和存储的功能,这使得数据将出现多个副本且有可能根据动态增加和降低,为了完成系统正常的读写性能以及保持数据的一致性,就必须利用先进的算法实现新的共享内存模型, ...

  5. K8s不同node如何共享存储

    试用markdown阅读体验更佳 环境准备 1.所有节点 2.主节点 3.从节点 4.原生方式数据挂载 1.PV&PVC 1.创建pv池 2.PVC创建与绑定 同一个pod内不同contain ...

  6. 分布式架构下,Session 共享有什么方案?

    来自:会点代码的大叔 分布式架构下的 Session 共享,也称作分布式 Session 一致性:分布式架构下 Session 共享有哪些问题,又有哪些解决方案,让我们一起看一下. 01 Sessio ...

  7. C#session共享+redis_Shiro权限管理框架(二):Shiro结合Redis实现分布式环境下的Session共享...

    精品推荐 国内稀缺优秀Java全栈课程-Vue+SpringBoot通讯录系统全新发布! Docker快速手上视频教程(无废话版)[免费] 作者:夜月归途 转载自: https://www.cnblo ...

  8. PolarFS :一个用于共享存储云数据库的超低延迟和容错分布式文件系统

    目录 1. 简介 2. 背景 3. 架构 4. I/O 执行模型 5. 一致性模型 6. FS中层的实现 7. 设计选择和经验教训 8. 价值评估 9. 相关工作 10. 结论 PolarFS : A ...

  9. Linux下IPC方式之共享存储映射(mmap)

    Linux下IPC方式之共享存储映射(mmap) 1. 共享存储映射(mmap) 2. mmap九问 3. mmap实现父子进程通信 4. 匿名映射 5. mmap实现无血缘进程通信 1. 共享存储映 ...

最新文章

  1. WINDOWS下的各类HOOK
  2. python不同层级模块的导入和文件的读写
  3. [视频教程] 如何在Linux深度系统deepin下安装docker
  4. JDK 10的摘要Javadoc标签
  5. word 公式编号 右侧对齐_写论文要求公式居中编号右对齐的方法
  6. python 将列表中的字符串转为数字_python 将列表中的字符串转为数字
  7. MFC串口通信设置及发送、中断接收程序
  8. 人工智能入门,怎么选择脚踏实地的工作岗位?
  9. Android studio Mac 版  Plugin Error Plugin “GsonFormat4DataBinding“ is incompatible
  10. 实现机器学习的循序渐进指南VII——Blending Stacking
  11. 简述 Linux 文件系统的目录结构
  12. CCF201609-5 祭坛【线段树】(100分解题链接)
  13. HDU2027 统计元音【入门】
  14. table内容保存到Excel中
  15. 如何在ADS使用VerilogA模型,并扫描参数
  16. Win 双网卡上网冲突,网络设置
  17. 计算机图像相关应用研究,计算机图像处理技术的应用探讨.pdf
  18. OpenStack云平台搭建(5) | 部署Nova
  19. android root权限破解分析
  20. TensorFlow2.0 学习笔记(三):卷积神经网络(CNN)

热门文章

  1. Mapgis图转换为可导入软件的shp
  2. 【转】Dynamics版本历史演进及Dynamics 365重要功能介绍
  3. 编辑器推荐:Visual Studio Code(VSCode/VSC)
  4. Python 数据分析三剑客之 NumPy(六):矩阵 / 线性代数库与 IO 操作
  5. PWN-PRACTICE-BUUCTF-15
  6. REVERSE-COMPETITION-NEPCTF
  7. PHP获取表单数据的方法有几种,如何实现PHP获取表单数据与HTML嵌入PHP脚本
  8. 【Python学习】 - sklearn学习 - 自带数据集sklearn.datasets.x
  9. VMware虚拟机下安装Ubuntu16.04镜像完整教程
  10. 河南省高考让不让带计算机,河南高考2018严禁携带的东西有哪些?这种衣服不能进考场...