基于SSD实现的海量检索缓存
石子夜
(北京万方数据股份有限公司 北京 100038)
摘 要 通过实现基于SSD的大规模数据缓存,并与Memcached等基于内存缓存技术比较,笔者发现在购置成本、管理成本、运营成本等多个方面,基于SSD的缓存方案比基于内存的缓存方案性价比可高达几倍甚至上百倍。SSD的快速随机寻道优势,使其不仅能用于替换传统机械硬盘,在处理海量数据时,还可以用于替换传统的大容量内存。
关键词 SSD 固态存储硬盘 海量数据处理 Memcached 缓存
1. 问题背景
近两年,SSD即固态存储硬盘开始兴起。一方面,SSD本身具有快速随机存取、低耗能、超轻超薄、低故障率(非机械部件)等特点。另一方面,由于技术发展,SSD逐渐解决了容量小,顺序存取速度慢的问题。当前市场上的最新SSD,单盘容量达到1TB,PCI接口的SSD 吞吐量超过1GB/s,IOPS超过10万次/s。SSD性能全面达到或超过传统机械硬盘,而其存取速度、响应时间等关键指标更是大幅(1到2个量级)超过传统机械硬盘。因此在一些领域,SSD已经开始替换传统机械硬盘。如:百度公司在2008年将其搜索服务器完全换用SSD[1]。
整个存储设备分层体系,一般为CPU缓存、主板芯片缓存、内存、硬盘、磁带。速度逐渐减慢、容量逐渐加大。SSD作为一种新的存储设备,在分层体系中位于内存与磁盘中间的位置。那么,它除了可以替换传统硬盘,是否能替换部分内存呢?
2. Memcached集群与SSD性能比较
SSD对内存的替换,可以从SSD的优势,即大容量应用着手。当前最典型的大容量内存应用就是诸如Memcached的分布式缓存,此类系统几乎是所有大型网站的核心。由于此类Cache应用中有大量随机存取,传统机械硬盘由于随机存取响应速度太低(服务器硬盘5ms以上),无法应付大量访问。内存的随机存取速度比传统机械硬盘高2个量级以上,但是单机内存容量比较小,必须采用分布式的方案,通过计算机集群提供足够的内存容量。
上百台计算机组成的大型Memcached集群可以做到TB量级容量,每秒完成数十万次存取。Memcached性能瓶颈主要在网络,一般使用千兆以太网,吞吐量不会超过100MB/s,即使最新的万兆以太网,吞吐量也不会超过1GB/s。一台使用SSD阵列的计算机,容量可以达到10TB,吞吐量可以超过4GB/s,IOPS超过100万次/s[2],其性能可以超过一个大型Memcached集群。
3. 基于SSD的缓存实例
上面对比的是大型应用性能,对于一般中小型Memcached集群,一两块普通SSD硬盘就可与之相抗衡。在万方数据知识服务平台中,需要对相似检索结果进行长达30天左右的缓存,平均每条10k左右,缓存量超过千万条,需占用100G以上的存储空间。如果采用传统Memcached方案,需要至少4台32G内存服务器。经过之前对SSD的分析,我们决定尝试使用一台8G内存服务器加两块160GB的SSD硬盘实现缓存系统。系统使用BerkeleyDB(非事务模式)作为后端存储数据库,采用.NET程序实现了缓存管理的逻辑,并使用WCF实现通讯。
我们随机造1000万的10KB的key-value数据,10线程并发测试,结果如下:
测试类型 | 总时间 | 吞吐量(IO) | 吞吐量(带宽) |
写测试 | 2:19:50 | 1,191次/s | 11.91MB/s |
读测试 | 1:06:10 | 2,518次/s | 25.18MB/s |
本测试的1000万随机数据Key值重复率极低,重复仅2万条左右,所以几乎没有使用内存缓存。虽然性能不是很高,但是应付我们的请求量绰绰有余。在实际运行时,由于短时间内会出现更高的重复比率,很多请求会直接在BerkeleyDB的内存缓存中命中,此时读操作的吞吐量可高达每秒上万次。
4. 性价比分析
我们实现的SSD缓存方案最大优势不是性能,而是成本,或者说是性价比。
4.1. 中小规模Cache性价比
我们先对比一下300G缓存的中小规模系统的采购与运营成本。
1) Memcached方案:
l 计算机采购费:>30万元(10台32G内存HP服务器 )
l 机柜租用费用:6万元/年(10台2U服务器正好占用1个机柜)
2) SSD缓存方案:
l 计算机采购费:<3万元(1台8G内存HP服务器,配2块160GB的Intel的 SSD[3])
l 机柜租用费用:6千元/年
对比可知,上述两种方案采购成本及运营成本均相差10倍以上。此外,10台计算机的管理成本也比1台要高。
4.2. 大规模Cache性价比
我们再看看3T缓存的大规模系统的采购与运营成本。
1. Memcached方案:
l 计算机采购费:>300万元(100台32G内存HP服务器,10台交换机)
l 机柜租用费用:60万元/年(100台2U服务器占用10个机柜)
2. SSD缓存方案:
l 计算机采购费:约10万元(1台8G内存HP服务器,3块1T的SSD硬盘)
l 机柜租用费用:6千元/年
这次对比的结果令人震惊,两种方案的采购费用相差30倍以上,运营成本相差更是达到100倍。相信随着SSD的发展,SSD缓存方案的计算机采购费用有可能进一步降低到5万元以下。同时,100台计算机的管理成本远超过1台计算机,计算机出现故障的概率也更高,因而也需要更多的人的参与,实际运营成本更高。
5. 结论
SSD的发展,给海量数据处理的应用带来了福音。之前需要大量投入才能得到的大容量高性能,现在只需要原来10%甚至1%的投入。数字图书馆的应用,一般都属于海量数据处理,如能合理应用SSD,就能用更少的成本,达到更好的效果。
参考文献:
[1] 百度搜索服务器完全换用SSD http://news.mydrivers.com/1/114/114319.htm
[2] Intel IDF2009展示IOPS高达1M SSD硬盘 http://www.enet.com.cn/article/2009/0929/A20090929546128.shtml
[3] Intel® X25-M and X18-M Mainstream SATA Solid-State Drives http://download.intel.com/design/flash/nand/mainstream/322208.pdf