乐思软件

提交需求|联系我们|请电400-603-8000

NoSQL在腾讯的应用实践


  二、【2006~2008】因QQ相册而研发TFS、TDB


  回顾NoSQL在腾讯的发展历程,需要从2006年腾讯分布式文件系统TFS 的研发开始谈起,TFS目的是在公司内部构建统一的存储平台,为各个BU提供文件系统服务。第一期的重点是要能够支持到QQ相册的快速发展。当时QQ相册使用传统企业级存储硬件+标准linux文件系统的老架构,在数百亿的图片数,每天近10亿长尾下载的规模下已难以为继。通过分析,老架构主要有下面三个问题:


  采用FC-SAN等高端企业级存储硬件,这些硬件主要是针对电信、银行等高ARPU值的行业客户而生,价格通常比较贵,对盛行免费的互联网企业来说,成本压力大。


  使用通用的linux文件系统,对相册海量小文件的场景,空间利用和IO性能都不能很好的满足要求。


  元数据与对象数据耦合,扩展性和可维护性较差,单机故障以及扩容都是异常繁琐的运维操作。


  TFS采用廉价的存储设备,在软件层面使用类似软raid的技术来满足系统基于不可靠硬件的可靠性要求。将对象数据与元数据分离:对象数据存储采用自研的CHUNK文件系统,inode节点更小,空间分配采用了基于append + delete更为紧凑的管理方式,使得单机最大可以支持数10亿的图片文件;元数据使用MYSQL存储。系统架构如下:
 

\
 

  上面的架构很好的满足了数百亿级别规模下的QQ相册业务发展。大致在07的时候,QQ相册采用TFS的新架构趋于稳定,同时业务发展需要,对用户上传也放开了限制,用户上传浏览的活跃度上升的一个新的量级,用户目录、文件索引等元数据规模突破千亿。在使用MYSQL应对如此大规模的元数据的场景下,暴露出一些问题:


  索引低效:在QQ相册的场景,上千亿的记录,使用MYSQL的B树索引索引的存储量消耗都在数TB到数十TB. 海量索引在无法全内存的情况会带来IO的多次访问,一方面增加了单次访问的时延,另一方面降低了磁盘的IO利用率。


  数据搬迁:每天数亿的图片上传导致系统扩容,IDC分布策略,导致数据搬迁是常态。使用MYSQL,使用select逐条记录方式搬迁,不同的记录分散在不同的磁盘偏移,一方面搬迁速度较慢,另一方面由迁移导致的磁盘随机IO与业务正常访问相互交织在一起,从而影响到在线业务访问。

集成系统网络情报信息数据库

CIO频道人物视窗
CIO频道方案案例库
大数据建设方案案例库
电子政务建设方案案例库
互联集成系统构建方案案例库
商务智能建设方案案例库
系统集成类软件信息研发企业名录