RAMCloud:基于内存的高性能存储

来源:互联网 发布:淘宝开店描述店铺语 编辑:程序博客网 时间:2024/06/08 01:31

RAMCloud最适合的场景是已经将服务器分为应用服务器(主要实现生成网页和执行业务规则等应用逻辑)和存储服务器(为应用服务器提供长期共享存储)的数据中心。这些数据中心一般支持许多应用,有的很小,只使用一台服务器的一部分能力,有的很大,要用到数千台专用应用和存储服务器。

而且,内存云中保存的信息必须和硬盘一样持久,单个存储服务器的故障不能造成数据丢失和哪怕几秒钟的服务不可用。RAMCloud将所有数据存放在DRAM中,性能可以达到比目前最高性能的硬盘存储系统还要高100~1000倍。在访问延迟方面,RAMCloud方案中运行在应用服务器中的一个进程从同一数据中心的存储服务器中通过网络读取数百字节数据只需5~10μs,而目前实际系统一般要花费0.5~10ms,具体取决于数据是在服务器内存缓存中,还是硬盘中。而且,一台多核存储服务器每秒可以服务至少100万次小读取请求。而硬盘系统中同样的机器每秒只能服务1000~10000次请求。RAMCloud的延迟5-10微秒,这比传统磁盘快1000倍,比闪存要快5倍左右。


低延迟为何如此重要


大规模应用纠结于高延迟,如FB上的每个网页只能响应100-150个间隔请求,而且随机访问使系统的扩展性降低。





RAMCloud架构






RAMCloud特征:

1   通用的存储系统
2   所有数据都在内存(没有缓存失效)
3   持久性和可用性
4   可扩展性(1000+ servers,32-64GB DRAM/server,100+ TB)
5   低延迟(5-10us远程访问)
6   高吞吐(1M ops/sec/server)

每个storage server都包含两个部分: Master和Backup。Master管理了存储在memory中的object。Backup使用本地的机械硬盘或者固态硬盘保存了其他server的数据备份。Coordinator管理了Master和Backup配置信息,比如集群各个server之间的关系和各个备份的分配。但是Coordinator并不涉入数据的读写操作,因此也不会成为cluster的bottleneck或者降低系统的scalability。

RAMCloud提供了一个简单的key-value的数据模型,数据(称为object)都是连续存储的。每个object都被长度不一的唯一的key标记。多个object被保存到table中,这个table有可能跨越多个server。object只能以整体的方式进行读写。它为小object做了专门的优化,这也非常适合超大规模的web并发的请求。

每个Master都有自己的日志,这些日志被分成8M的块,成为segment。每个segment都会冗余到其他的server的Backup,典型的配置都是冗余2-3块。在client写操作的时候,冗余发送到其他的节点,这些节点在把冗余写到memory的buffer后就会返回,而不是保存到本地磁盘后才返回,这样保证了client的高速度写入。这些buffer在某些时间点会flush到本地存储。



数据模型




Buffered Logging





故障恢复










Flash为效率而生,凭借极致的性能,高可用性,极大地提高企业级应用效率。随着SSD技术的发展和成本的下降,SSD有可能会取代机械硬盘,成为下一代企业存储的主要介质。但是,现在有需要基于内存的数据库,比如Redis,memcached也把数据全都放入到内存中,避免实时性和可用性差的问题。

也许,Tape is Dead, Disk is Tape, Flash is Disk, RAM Locality is King。
1 0
原创粉丝点击