Tcl/Tk的创始人、美国工程院院士、ACM Fellow John Ousterhout目前在斯坦福大学任教,他近年来的主要研究项目是RAMCloud——内存云。顾名思义,RAMCloud就是这样一种新型数据中心存储系统,它是由成千上万台普通服务器的主存所组成的大规模系统,任何时候,所有信息都存储在这些快速的DRAM(动态随机访问存储器,即俗称的内存)中,内存取代了传统系统中的硬盘,硬盘只作为备份使用。
内存云由此能同时实现大规模 (100~1000 TB) 和低延迟(同一数据中心应用程序访问少量内存云数据只需5~10ms,比目前系统快100~1000倍)。内存云不仅会简化大型Web应用的开发,而且,将催生新的数据密集型应用。
最新出版的《ACM通信》(Communications of ACM)2011年8月刊发表了Ousterhout与他的团队合作撰写的论文“The Case for RAMCloud”
在过去四十年,磁盘已经成为计算机系统网上信息的主要存储位置。
在此期间,磁盘技术已经发生了显着改善,由更高级别的存储系统(如文件系统和关系数据库)利用。但是磁盘性能却并没有像磁盘容量那样有所改变。一个不容忽视的现实摆在了面前——技术人员发现基于磁盘的系统越来越难以形成规模以满足大型Web应用程序的需要。
许多计算机科学家们提出了新的基于磁盘存储的解决方案,以及其他建议更换磁碟与快闪记忆体装置。相比之下,我们说的解决方案是基本想法就是将在线数据从磁盘迁移到DRAM上,从而在磁盘之上创建一种新式存储。
这时,一个被称为“RAMCloud”新的存储方式将为未来许多应用提供新的存储架构。
什么是RAMCloud?
RAMCloud架构的原理在于将存储所有商业服务器的信息在主存储器上,并使用数百上千的服务器创建大型存储系统。据称,存储在RAMCloud上的数据的延迟要比存储在基于硬盘的系统上低100-1000倍,而吞吐量则会高100-1000倍。
虽然个体存储容易改变,但RAMCloud可以利用复制和备份技术以保障数据的耐久性和可用性,就像传统基于磁盘的系统那样。
RAMCloud可提供低延迟和大规模,并将从以下三点改变存储行业的现状。首先,RAMCloud会消除开发大规模Web应用所面临的可扩展性问题。其次将启用新的应用类,比当今深入100-1000倍操作数据将成为可能;RAMCloud集群可以支持单个的代谢那个程序或许多较小的应用程序,并可在小型应用转变为大型应用的开发时保证没有额外的复杂性。
RAMCloud的架构原理
1、在RAMCloud架构中,大量服务器组成的数据中心可分为两类:应用服务器,实现应用程序的逻辑(如生成Web网页和执行业务规则)和存储服务器,提供较长的共享应用服务器存储。
2、RAMCloud代表系统存储组织服务器的一种新方式,有两个关键的区别区分RAMCloud和传统存储系统。首先,所有信息在任何时候都保存在RAMCloud;其次,RAMCloud必须建立在一定规模(数以千计)存储服务器上。对于应用程序,独立于存储服务器的单一存储系统的实际数量是可见的。
3、RAMCloud存储的信息必须为持久的,就像存储在磁盘上那样。一个单一的存储服务器出现故障后绝不会造成数据丢失或哪怕几秒的数据不可用的状况。实现耐用久性和可用性的技术的将会在本文后边讨论。
4、保存在DRAM上的所有数据都允许保存在RAMCloud,并且比当今给予高性能磁盘存储系统的实际性能要高100到1000倍。
5、在同一个数据中心中通过在应用服务器上运行的一个进程通过网络读取几百字节的数据的访问延迟有可能降低到5μs–10μs。相比之下,今天的系统通常需要0.5ms到10ms,这取决于数据是否存在于服务器内存的缓存上,或必须从磁盘中读取。
6、一台多核的存储服务器应该至少能在每秒相应100万的网络请求。根据配置和缓存的内容,一个基于磁盘的系统的类似机器(运行多个磁盘和一个存储缓存的主内存)每秒可相应1000至10000的网络请求。
案例分享
目前一个可行的RAMCloud配置,每台服务器配置24GB的DRAM,这是高性价比的配置。扩展内存会导致成本的急剧增加。2000服务器会配备48TB的存储空间,平均每GB成本65美元。据预测,到2020年,随着DRAM技术的不断完善,激励1PB-10PB配置的RAMCloud时每GB成本仅需6美元。
RAMCloud已经在实际中有所应用。例如一个大型的网络零售商或航空公司使用RAMCloud的花费在几十万美元。截止2009年8月Facebook所有非图像数据大约有260TB。这可能接近了当今RAMCloud实用的上限。
像电视频、照片、歌曲等数据还没有大规模应用RAMCloud,然而RAMCloud实际已经可以用在所有在线的数据。随着DRAM技术的不断改进,RAMCloud在未来会更具吸引力。
RAMCloud的存在价值
首先,RAMCloud可以是一个数据密集型应用的新架构,传统的架构是应用程序连同代码和数据被加载到一台服务器的主存储中,瓶颈也是显而易见的,各种复杂的数据操作,应用程序的大小,机器的处理能力都是瓶颈。
而在过去的10年中,一种服务于数百万用户的大型WEB应用架构出现了。其主要将应用程序代码和数据存放于同一个数据中心中的不同服务器中。应用服务器只存储当前请求和处理浏览器的需求,而这种架构允许应用程序扩展到成千上万的应用服务器和存储。
但是不幸的是,在大型架构图中,当服务器增加了4-5个数量级后,应用程序的复杂性,数据的访问延迟都成了问题。比如当Facebook收到一个HTTP请求访问网页时,应用服务器必须发出130个以上的数据以生成HTML页面,这当中有指令请求的顺序,而这些请求指令的累积是造成给用户整体响应时间延迟的因素之一,所以需要相当大的开发量,以尽量减少对服务器请求的代码大小和数量。
Mapreduce是最近几年兴起的一个新的技术,目的在于提高数据接入速度,消除了延迟问题,现在它解决了大规模的问题,但是如果是连续的数据访问,将使得Mapreduce仅仅限于在随机访问数据的应用中使用。
RAMCloud则充分结合了两者的优势——规模化和低延迟:保留了Web应用程序的可扩展性,同时降低了数据访问延迟以接近传统的应用程序。
对现有应用程序的扩展存储
对于新的应用,RAMCloud将使其更容易建立。因为缺乏一个可扩展的存储系统,现在开发大型的Web应用程序是困难的。
过去所有的Web应用程序都使用关系型数据库存储,但随着数据规模的扩大,一个单一的关系型数据库已经不能满足他们的I/O需求。因此大家开始做系统升级,引进新的技术来扩展自己的存储系统(比如多个数据库间的数据分区)。
比如,尽管Facebook在2009年的时候就有4000个MySQL服务器,但由于大量交互式数据的调用,现有的存储系统依旧不能满足它的I/O需求,所以Facebook用了2000个Memcached用作分布式内存对象缓存服务器——将一些键值存储于主内存中,但其瓶颈在于,需要处理Memcached和MySQL服务器之间的一致性,需要对应用软件进行管理(比如刷新缓存值以更新数据库),这无疑增加了应用的复杂性。
因此,NoSQL开始出现,用非关系型数据库以键值对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销,但是他们瓶颈依然是磁盘速度。
RAMCloud的原理之一是提供一个通用的存储系统,其规模远远超出现有的系统,应用程序开发人员不需要采取特殊的方式(如NoSQL系统)。理想的状态是,RAMCloud提供一个简单的模型,易用、并且有扩展性,并对应用程序的城战不需要做架构上的改变。
技术的发展趋势
RAMCloud的发展动力是来自磁盘技术的演进。 磁盘容量从80年代以来增长了超过10000倍,未来还将继续增加(表3),不幸的是,磁盘上的信息访问速度却停止不前,显著的提高方式是通过减少寻道时间和旋转延迟,但仅仅提高了50倍,和容量的增加实在无法成正比。
硬盘技术不平衡发展的结构,导致了数据必须保存在内存中不停访问。如果按照容量/带宽的比例来计算,如果磁盘是用作填补特定大小的块,那么每块多久可以访问?随机访问又如何呢?一个可行的办法是降低磁盘的利用率,如果只有一半的磁盘能够使用,那么访问速度理论上可以提高一倍。有数据显示,到2009年末时,Facebook真正可以利用的磁盘容量只有10%,显然,这个成本有点太高,从经济性和节能性来说,绝对不是一个好的架构。
缓存
对软件工程师而言,如果大多数访问只是磁盘一个小块,可以实现高性能保持在DRAM访问最频繁的块之上,在理想的状态下,使用缓存系统能够提供类似DRAM的性能+磁盘的成本。但是DRAM和磁盘之间的访问时间存在着1000倍的差距,这也意味着高速缓存必须要有非常低的损失率,以避免性能上的损失。
SSD
目前来看,可选择的SSD有两种:基于DRAM的设备和基于闪存的设备。
基于DRAM存储设备比基于闪存的存储设备速度更快,但成本也要高得多。
比如,2TB大小基于闪存的存储设备成本大约为18万美元;相比之下,存储容量相同但基于DRAM的存储设备成本高达约100万美元。基于DRAM的驱动器读取或写入数据的时间只要0.015毫秒,工作状态下随机速度达到了每秒可以处理40万次I/O。这种驱动器最适合以写操作为主的软件以及使用高性能数据库应用系统的公司。
基于闪存的存储驱动器读取或写入数据的时间为0.2毫秒,工作状态下最高读取速度为每秒10万次I/O,最高写入速度为每秒2.5万次I/O。这项技术也更适合以读操作为主的应用。