云存储技术在音乐应用领域的研究与实践
2013-02-28杨翊平
梁 冰,杨翊平,金 铎,徐 雄
(中国电信股份有限公司广州研究院 广州510630)
1 前言
伴随国内3G市场的启动,移动互联网应用将迎来“爆炸式”的增长,在娱乐、商务、信息服务等各个方面进入人们的基本生活。中国电信在移动互联网音乐应用方面的信息内容也日趋丰富,需要存储大量的资源文件,如音乐、歌词、视频、书籍、图片等,对文件系统提出海量数据存储、高并发访问、基于内容的缓存、负载均衡等要求。
2 音乐在内容存储方面的关键问题
2.1 异构、海量的内容存储
大部分移动互联网内容型应用都包含了UGC功能,涉及用户上传、评论等。不同于应用中结构相对稳定的基本内容,这类信息的特点是结构多样且随着业务发展不断变化、用户规模扩大而急速增加。Facebook每天的分享内容条数超过25亿;美国大选期间Twitter共产生了3 100万条和大选相关的Tweets;新浪微博最初只是分享文字,后续逐步发展为可以分享图片、音乐、视频等富媒体信息。如何存储海量、多变内容,是每个移动互联网应用需要解决的问题。
2.2 高效缓存
在移动互联网业务中,资源的访问效率对用户体验有很大影响,例如用户下载一首歌曲,通常希望能在1 min内下载完成。要提高访问效率,需要增加资源文件在缓存系统的命中率。随着业务的发展,富媒体信息逐渐增多,图片、音乐、视频等资源文件越来越大,增加缓存系统的内存对提高缓存命中率的作用不明显。
2.3 文件指纹
在音乐应用中,需要从多种渠道采集内容,包括图片、音乐、视频等。这些从不同渠道采集的同一种资源文件中,有很多是内容相同的。在存储方面,对这些内容相同的资源文件只保留一份,能大大节省存储空间。
2.4 内容分发
移动互联网时代,各种网络接入方式导致用户访问内容的速度不一,为保证用户在不同的网络接入情况下都有较好的用户体验,需要根据不同的网络接入情况进行内容分发及分流。特别地,对于体积较大的多媒体文件,在借助传统的CDN达到就近接入提升访问速度的基础上,还要考虑根据用户的接入速度,提供不同质量的内容。例如在音乐试听应用中,为带宽较小的用户提供较低码率音源,为带宽较大的用户提供高码率音源。
2.5 资源防盗链
音源、视频等是内容提供商的重要资产,特别是高清视频、高品质音源等优质资源。因此,在提供资源访问服务时需要考虑资源防盗链的问题。一方面,防止资源被恶意抓取;另一方面,可避免非正常访问造成的带宽、网络连接等资源浪费。
3 面向音乐应用的云存储系统
云存储是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。本文基于业界开源的轻量级专用分布式文件系统框架,研发了一套适合音乐应用需求的云存储系统。
本文研发的云存储系统具有如下特点。
·在线可扩展性:可在线增减设备,适应移动互联网内容数据飞速增长的需求。
·基于内容的路由:根据用户请求的内容和网络接入情况,分配相应的存储服务器提供服务,提供整体系统资源利用率。
·高效缓存系统:根据用户在线服务的使用特征,系统支持对特定的资源文件只缓存部分内容,提高缓存文件的数量,从而提高缓存命中率。
·文件指纹:支持相同内容的文件只保存一份,节约磁盘空间。
·防盗链:系统为每个用户分配系统编号和密钥,下载时需要根据file_id、系统编号、当前时间进行加密得到数字签名。系统对数字签名的合法性和操作请求时间是否超过阈值进行验证,验证通过才允许进行下载。
3.1 分布式文件系统相关技术
从业务需求上,常用的分布式文件系统产品可以分为如下两类。
·用于存储大文件的分布式文件系统,以支持大数据集合为目标,对数据块的连续读访问进行优化,目的是解决批处理的数据分析。这种文件系统以Hadoop的HDFS为代表。
·用于存储海量小文件的分布式文件系统,目的是为了解决大容量存储和负载均衡的问题,特别适合以文件为载体的在线服务。对音乐移动互联网应用,需要存储大量资源文件,并需要支持高并发访问和负载均衡,适合采用这类分布式文件系统。
从系统实现方式上,分布式文件系统分两类:通用分布式文件系统和专用分布式文件系统。
·通用分布式文件系统:和传统的本地文件系统(如Ext3、NTFS等)相对应,应用端可以实现mount(挂载)。典型代表:Lustre、MooseFS。
·专用分布式文件系统:基于google FS的思想,文件上传后不能修改。不能实现mount,需要使用专有API对文件进行访问,也可称作分布式文件存储服务。典型代表:MogileFS、FastDFS、TFS。
通用分布式文件系统采用标准文件的系统操作方式,对开发者的门槛较低。但是通用文件系统需要支持若干标准的文件操作,如:目录结构、文件读写权限、文件锁等,系统复杂性较高,如果直接采用内核级mount方式,系统复杂度更高。通用分布式文件系统要支持POSIX标准,尤其要采用PUSE来实现mount,所以系统的整体性能较低。而专用分布式文件系统不需要支持若干标准的文件操作,系统简洁,而且无需支持POSIX标准,可以省去支持POSIX引入的环节,系统整体性能比较高。
根据音乐在内容存储方面特定的业务需求,本文采用业界开源的轻量级专用分布式文件系统来构建云存储系统。
3.2 系统设计
本文研发的云存储系统的基本架构如图1所示。
·底层是一个完全分布式的文件系统。
·在文件系统基础上提供API和HTTP接口,向移动互联网应用系统提供文件上传、下载、缓存等服务。
·管理监控系统对分布式文件系统的整体运行状态进行管理和监控。
图1 云存储系统的基本架构
3.2.1 分布式文件系统
底层的分布式文件系统分为调度服务器(tracker server)和存储服务器(storage server)两个角色,所有服务都不存在单点,可在线线性扩展。
·tracker server:负责调度,在内存中记录集群中group和storage server的状态信息,在访问上起负载均衡的作用。每个tracker server的功能和所保存的数据都完全相同,上层应用根据一定的策略(例如随机或轮询)选择一个tracker server进行服务。
·storage server:采用分组方式,同组内storage server上的文件完全相同 (RAID 1);不同组的storage server之间不相互通信;同组storage server之间相互同步数据;storage server主动向tracker server报告信息。
tracker server和storage server之间的接口调用关系如图2所示。
·客户端从tracker server获得一个可提供服务的storage server。
·客户端和storage server通信。
·同组storage server之间同步数据。
·storage server向tracker server报告信息。
tracker server上传文件的路由策略包括:
·选择剩余空间最大的group;
·基于内容格式选择:根据文件格式(mp3、dat等)选择相应的storage server;
·基于接入方式选择:根据用户接入方式和网络带宽选择相应的storage server,对用户上传较大内容的文件选择这种路由策略;
·轮询/随机。
图2 tracker server和storage server之间的接口调用关系
下载文件时,在同组storage server中进行路由选择的策略包括:
·选择最空闲的storage server;
·根据用户接入方式和网络带宽选择;
·轮询/随机。
3.2.2 API和HTTP接口
在分布式文件系统的Web Server和tracker server上封装了API和HTTP接口对外提供服务,具体功能如下。
·文件上传:用户能将本地文件上传到文件系统,并获得文件系统的file_id。文件上传时能校验文件的合法性,例如mp3文件的格式、文件大小限制等。
·文件下载:用户能根据file_id下载文件。下载支持防盗链功能,文件系统为每个用户分配系统编号和密钥,下载时需要根据file_id、系统编号、当前时间进行加密得到数字签名。文件服务器对数字签名和请求时间进行验证,验证通过后才允许下载文件。
·文件下载:用户能根据file_id删除文件。
系统支持资源文件下载防盗链功能:系统为每个用户分配系统编号和密钥,用户下载资源文件需要根据file_id、系统编号、当前时间进行加密得到数字签名,文件服务器对下面两项进行验证,验证通过后才允许下载文件。
·验证数字签名是否合法。
·服务器当前时间和下载请求时间的间隔是否超过设置的阈值。
在提供HTTP接口的Web服务器上,还提供代理服务器功能,并支持资源文件下载的高效缓存。
3.2.3 管理监控系统
管理监控系统为系统管理员提供系统资源全局视图,管理员能掌握下列情况。
·文件系统整体拓扑结构:tracker server和storage server服务器的数量;storage server分组情况。
·资源使用情况:每组storage server的存储空间;每台机器的资料利用率,包括CPU、IO、带宽等。资源不足时系统自动预警。
·用户操作日志:包括文件上传、删除、系统缓存等操作。
·文件管理:包括文件编号、所在分组、文件大小、上传时间、上传的原始文件编号等。
·系统运行管理:新增或删除服务器、storage server之间同步数据、服务器启停等。
3.3 高效访问的实现方案
本文实现的云存储系统不需要索引服务器,通过文件名可以直接映射到storage server的分组和磁盘路径,减少索引查找和路由时间,提高系统效率。具体实现方法是:在文件上传时,由storage server生成文件ID返回给业务系统,文件ID包含storage server所属的分组、磁盘、目录、源storage server的IP地址、上传时间;在文件下载时,系统根据文件名定位到storage server分组,在分组中根据CPU、系统I/O、带宽等资源空闲情况选择相应的storage server,storage server直接根据文件ID可直接定位到磁盘文件。
本文提出的系统设计方案通过路由服务器,多个storage server可同时提供并发访问服务。当并发访问量增大时,增加storage server可以提升系统整体的吞吐量。由于系统storage server可线性扩展,系统理论上可支持无限大的并发访问量。
为提高访问效率,本文还针对移动互联网用户在线应用的特征,提出了一个高效的缓存实现方案。在音乐试听应用中,大多数用户只听音乐的前10 s内容。根据这个特征,在做文件缓存时,将资源文件分割成大小不等的若干片,例如一个3 MB的mp3文件共分成4片,每片在原始文 件 中 的 位 置 为:0~200 KB,200~800 KB,800~1.5 MB,1.5~3 MB。文件访问时,根据访问内容分片读取文件并缓存。通过这样的文件分片缓存方案,显著增加数据访问的缓存命中率,提升了用户对资源文件访问效率的体验。在系统实现上,缓存在HTTP接口的Web服务器上实现。
4 云存储系统的应用
云存储作为移动互联网应用的一个基础能力,用于多种移动互联网应用。其核心价值在于为产品提供高速、高可靠、高扩展性的存储能力。云存储即可直接作为产品,例如百度云等网络U盘应用,也可作为业务平台的基础设施,为平台提供内容存储能力。随着移动互联网不断发展,各类创新的产品将层出不穷,但产品对存储的依赖只会与日俱增。采用云存储技术,产品可方便地将需要持久化的信息存储在云端,无需考虑存储如何组织,如何保证可靠性、支持高速访问等问题。
本文研发的云存储系统已在“中国电信爱音乐”的相关项目中应用,其中在音源、图片、视频存储,用户上传等方面都利用了云存储系统提供的能力,取得了良好的效果。
爱音乐云存储系统如图3所示,可分为运营服务层:负责内容分发及访问调度,主要包括移互平台(爱音乐提供实时接口服务的业务平台);内容管理层:负责内容管理、转码等,主要包括ICM(爱音乐内容管理系统);存储层:负责资源存储,主要包括资源存储及服务系统。
图3 爱音乐云存储系统
以用户使用客户端上传音乐为例,用户在客户端获得上传音乐的授权(通过移动平台)之后,选择要上传的音乐,客户端调用ICMS的文件上传接口。ICMS接收文件并转给资源存储及服务系统,后者生成文件指纹(文件唯一性特征值,通过文件指纹可识别不同的文件),根据文件指纹、大小等信息分配存储空间,将文件写入具体的存储服务器,并保存文件的指纹、上传时间、大小、位置等信息,生成访问链接返回ICMS。ICMS保存上传音乐的详细信息,把文件访问链接返回给客户端,并自动生成若干种码率的音源文件,相关信息同步给移互平台。用户再次访问上传的音乐时,移互平台将根据用户的网络接入方式、终端类型等自动适配音源码率,返回最合适的音源访问链接。
5 结束语
移动互联网正在飞速发展,云存储对移动互联网来说是绝对的助推器。本文针对移动互联网对内容存储的需求,结合音乐在线服务的特点,对云存储技术在音乐领域的应用进行了探索,将来还要将云存储技术运用到更多应用领域。
1 余庆.分布式文件系统概况及FastDFS介绍.http://www.docin.com/p-303753002.html,2010
2 陈鹏宇.云计算与移动互联网.科技咨询,2011(29)
3 罗国治.云计算技术与互联网发展.2010云计算产业高峰论坛,2010
4 朱旭.移动互联网及其热点技术分析.中国高新技术企业.2010(20)