梁 冰,楊翊平,金 鐸,徐 雄
(中國電信股份有限公司廣州研究院 廣州510630)
伴隨國內(nèi)3G市場的啟動(dòng),移動(dòng)互聯(lián)網(wǎng)應(yīng)用將迎來“爆炸式”的增長,在娛樂、商務(wù)、信息服務(wù)等各個(gè)方面進(jìn)入人們的基本生活。中國電信在移動(dòng)互聯(lián)網(wǎng)音樂應(yīng)用方面的信息內(nèi)容也日趨豐富,需要存儲(chǔ)大量的資源文件,如音樂、歌詞、視頻、書籍、圖片等,對(duì)文件系統(tǒng)提出海量數(shù)據(jù)存儲(chǔ)、高并發(fā)訪問、基于內(nèi)容的緩存、負(fù)載均衡等要求。
大部分移動(dòng)互聯(lián)網(wǎng)內(nèi)容型應(yīng)用都包含了UGC功能,涉及用戶上傳、評(píng)論等。不同于應(yīng)用中結(jié)構(gòu)相對(duì)穩(wěn)定的基本內(nèi)容,這類信息的特點(diǎn)是結(jié)構(gòu)多樣且隨著業(yè)務(wù)發(fā)展不斷變化、用戶規(guī)模擴(kuò)大而急速增加。Facebook每天的分享內(nèi)容條數(shù)超過25億;美國大選期間Twitter共產(chǎn)生了3 100萬條和大選相關(guān)的Tweets;新浪微博最初只是分享文字,后續(xù)逐步發(fā)展為可以分享圖片、音樂、視頻等富媒體信息。如何存儲(chǔ)海量、多變內(nèi)容,是每個(gè)移動(dòng)互聯(lián)網(wǎng)應(yīng)用需要解決的問題。
在移動(dòng)互聯(lián)網(wǎng)業(yè)務(wù)中,資源的訪問效率對(duì)用戶體驗(yàn)有很大影響,例如用戶下載一首歌曲,通常希望能在1 min內(nèi)下載完成。要提高訪問效率,需要增加資源文件在緩存系統(tǒng)的命中率。隨著業(yè)務(wù)的發(fā)展,富媒體信息逐漸增多,圖片、音樂、視頻等資源文件越來越大,增加緩存系統(tǒng)的內(nèi)存對(duì)提高緩存命中率的作用不明顯。
在音樂應(yīng)用中,需要從多種渠道采集內(nèi)容,包括圖片、音樂、視頻等。這些從不同渠道采集的同一種資源文件中,有很多是內(nèi)容相同的。在存儲(chǔ)方面,對(duì)這些內(nèi)容相同的資源文件只保留一份,能大大節(jié)省存儲(chǔ)空間。
移動(dòng)互聯(lián)網(wǎng)時(shí)代,各種網(wǎng)絡(luò)接入方式導(dǎo)致用戶訪問內(nèi)容的速度不一,為保證用戶在不同的網(wǎng)絡(luò)接入情況下都有較好的用戶體驗(yàn),需要根據(jù)不同的網(wǎng)絡(luò)接入情況進(jìn)行內(nèi)容分發(fā)及分流。特別地,對(duì)于體積較大的多媒體文件,在借助傳統(tǒng)的CDN達(dá)到就近接入提升訪問速度的基礎(chǔ)上,還要考慮根據(jù)用戶的接入速度,提供不同質(zhì)量的內(nèi)容。例如在音樂試聽?wèi)?yīng)用中,為帶寬較小的用戶提供較低碼率音源,為帶寬較大的用戶提供高碼率音源。
音源、視頻等是內(nèi)容提供商的重要資產(chǎn),特別是高清視頻、高品質(zhì)音源等優(yōu)質(zhì)資源。因此,在提供資源訪問服務(wù)時(shí)需要考慮資源防盜鏈的問題。一方面,防止資源被惡意抓??;另一方面,可避免非正常訪問造成的帶寬、網(wǎng)絡(luò)連接等資源浪費(fèi)。
云存儲(chǔ)是指通過集群應(yīng)用、網(wǎng)格技術(shù)或分布式文件系統(tǒng)等功能,將網(wǎng)絡(luò)中大量各種不同類型的存儲(chǔ)設(shè)備通過應(yīng)用軟件集合起來協(xié)同工作,共同對(duì)外提供數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)訪問功能的一個(gè)系統(tǒng)。本文基于業(yè)界開源的輕量級(jí)專用分布式文件系統(tǒng)框架,研發(fā)了一套適合音樂應(yīng)用需求的云存儲(chǔ)系統(tǒng)。
本文研發(fā)的云存儲(chǔ)系統(tǒng)具有如下特點(diǎn)。
·在線可擴(kuò)展性:可在線增減設(shè)備,適應(yīng)移動(dòng)互聯(lián)網(wǎng)內(nèi)容數(shù)據(jù)飛速增長的需求。
·基于內(nèi)容的路由:根據(jù)用戶請求的內(nèi)容和網(wǎng)絡(luò)接入情況,分配相應(yīng)的存儲(chǔ)服務(wù)器提供服務(wù),提供整體系統(tǒng)資源利用率。
·高效緩存系統(tǒng):根據(jù)用戶在線服務(wù)的使用特征,系統(tǒng)支持對(duì)特定的資源文件只緩存部分內(nèi)容,提高緩存文件的數(shù)量,從而提高緩存命中率。
·文件指紋:支持相同內(nèi)容的文件只保存一份,節(jié)約磁盤空間。
·防盜鏈:系統(tǒng)為每個(gè)用戶分配系統(tǒng)編號(hào)和密鑰,下載時(shí)需要根據(jù)file_id、系統(tǒng)編號(hào)、當(dāng)前時(shí)間進(jìn)行加密得到數(shù)字簽名。系統(tǒng)對(duì)數(shù)字簽名的合法性和操作請求時(shí)間是否超過閾值進(jìn)行驗(yàn)證,驗(yàn)證通過才允許進(jìn)行下載。
從業(yè)務(wù)需求上,常用的分布式文件系統(tǒng)產(chǎn)品可以分為如下兩類。
·用于存儲(chǔ)大文件的分布式文件系統(tǒng),以支持大數(shù)據(jù)集合為目標(biāo),對(duì)數(shù)據(jù)塊的連續(xù)讀訪問進(jìn)行優(yōu)化,目的是解決批處理的數(shù)據(jù)分析。這種文件系統(tǒng)以Hadoop的HDFS為代表。
·用于存儲(chǔ)海量小文件的分布式文件系統(tǒng),目的是為了解決大容量存儲(chǔ)和負(fù)載均衡的問題,特別適合以文件為載體的在線服務(wù)。對(duì)音樂移動(dòng)互聯(lián)網(wǎng)應(yīng)用,需要存儲(chǔ)大量資源文件,并需要支持高并發(fā)訪問和負(fù)載均衡,適合采用這類分布式文件系統(tǒng)。
從系統(tǒng)實(shí)現(xiàn)方式上,分布式文件系統(tǒng)分兩類:通用分布式文件系統(tǒng)和專用分布式文件系統(tǒng)。
·通用分布式文件系統(tǒng):和傳統(tǒng)的本地文件系統(tǒng)(如Ext3、NTFS等)相對(duì)應(yīng),應(yīng)用端可以實(shí)現(xiàn)mount(掛載)。典型代表:Lustre、MooseFS。
·專用分布式文件系統(tǒng):基于google FS的思想,文件上傳后不能修改。不能實(shí)現(xiàn)mount,需要使用專有API對(duì)文件進(jìn)行訪問,也可稱作分布式文件存儲(chǔ)服務(wù)。典型代表:MogileFS、FastDFS、TFS。
通用分布式文件系統(tǒng)采用標(biāo)準(zhǔn)文件的系統(tǒng)操作方式,對(duì)開發(fā)者的門檻較低。但是通用文件系統(tǒng)需要支持若干標(biāo)準(zhǔn)的文件操作,如:目錄結(jié)構(gòu)、文件讀寫權(quán)限、文件鎖等,系統(tǒng)復(fù)雜性較高,如果直接采用內(nèi)核級(jí)mount方式,系統(tǒng)復(fù)雜度更高。通用分布式文件系統(tǒng)要支持POSIX標(biāo)準(zhǔn),尤其要采用PUSE來實(shí)現(xiàn)mount,所以系統(tǒng)的整體性能較低。而專用分布式文件系統(tǒng)不需要支持若干標(biāo)準(zhǔn)的文件操作,系統(tǒng)簡潔,而且無需支持POSIX標(biāo)準(zhǔn),可以省去支持POSIX引入的環(huán)節(jié),系統(tǒng)整體性能比較高。
根據(jù)音樂在內(nèi)容存儲(chǔ)方面特定的業(yè)務(wù)需求,本文采用業(yè)界開源的輕量級(jí)專用分布式文件系統(tǒng)來構(gòu)建云存儲(chǔ)系統(tǒng)。
本文研發(fā)的云存儲(chǔ)系統(tǒng)的基本架構(gòu)如圖1所示。
·底層是一個(gè)完全分布式的文件系統(tǒng)。
·在文件系統(tǒng)基礎(chǔ)上提供API和HTTP接口,向移動(dòng)互聯(lián)網(wǎng)應(yīng)用系統(tǒng)提供文件上傳、下載、緩存等服務(wù)。
·管理監(jiān)控系統(tǒng)對(duì)分布式文件系統(tǒng)的整體運(yùn)行狀態(tài)進(jìn)行管理和監(jiān)控。
圖1 云存儲(chǔ)系統(tǒng)的基本架構(gòu)
3.2.1 分布式文件系統(tǒng)
底層的分布式文件系統(tǒng)分為調(diào)度服務(wù)器(tracker server)和存儲(chǔ)服務(wù)器(storage server)兩個(gè)角色,所有服務(wù)都不存在單點(diǎn),可在線線性擴(kuò)展。
·tracker server:負(fù)責(zé)調(diào)度,在內(nèi)存中記錄集群中g(shù)roup和storage server的狀態(tài)信息,在訪問上起負(fù)載均衡的作用。每個(gè)tracker server的功能和所保存的數(shù)據(jù)都完全相同,上層應(yīng)用根據(jù)一定的策略(例如隨機(jī)或輪詢)選擇一個(gè)tracker server進(jìn)行服務(wù)。
·storage server:采用分組方式,同組內(nèi)storage server上的文件完全相同 (RAID 1);不同組的storage server之間不相互通信;同組storage server之間相互同步數(shù)據(jù);storage server主動(dòng)向tracker server報(bào)告信息。
tracker server和storage server之間的接口調(diào)用關(guān)系如圖2所示。
·客戶端從tracker server獲得一個(gè)可提供服務(wù)的storage server。
·客戶端和storage server通信。
·同組storage server之間同步數(shù)據(jù)。
·storage server向tracker server報(bào)告信息。
tracker server上傳文件的路由策略包括:
·選擇剩余空間最大的group;
·基于內(nèi)容格式選擇:根據(jù)文件格式(mp3、dat等)選擇相應(yīng)的storage server;
·基于接入方式選擇:根據(jù)用戶接入方式和網(wǎng)絡(luò)帶寬選擇相應(yīng)的storage server,對(duì)用戶上傳較大內(nèi)容的文件選擇這種路由策略;
·輪詢/隨機(jī)。
圖2 tracker server和storage server之間的接口調(diào)用關(guān)系
下載文件時(shí),在同組storage server中進(jìn)行路由選擇的策略包括:
·選擇最空閑的storage server;
·根據(jù)用戶接入方式和網(wǎng)絡(luò)帶寬選擇;
·輪詢/隨機(jī)。
3.2.2 API和HTTP接口
在分布式文件系統(tǒng)的Web Server和tracker server上封裝了API和HTTP接口對(duì)外提供服務(wù),具體功能如下。
·文件上傳:用戶能將本地文件上傳到文件系統(tǒng),并獲得文件系統(tǒng)的file_id。文件上傳時(shí)能校驗(yàn)文件的合法性,例如mp3文件的格式、文件大小限制等。
·文件下載:用戶能根據(jù)file_id下載文件。下載支持防盜鏈功能,文件系統(tǒng)為每個(gè)用戶分配系統(tǒng)編號(hào)和密鑰,下載時(shí)需要根據(jù)file_id、系統(tǒng)編號(hào)、當(dāng)前時(shí)間進(jìn)行加密得到數(shù)字簽名。文件服務(wù)器對(duì)數(shù)字簽名和請求時(shí)間進(jìn)行驗(yàn)證,驗(yàn)證通過后才允許下載文件。
·文件下載:用戶能根據(jù)file_id刪除文件。
系統(tǒng)支持資源文件下載防盜鏈功能:系統(tǒng)為每個(gè)用戶分配系統(tǒng)編號(hào)和密鑰,用戶下載資源文件需要根據(jù)file_id、系統(tǒng)編號(hào)、當(dāng)前時(shí)間進(jìn)行加密得到數(shù)字簽名,文件服務(wù)器對(duì)下面兩項(xiàng)進(jìn)行驗(yàn)證,驗(yàn)證通過后才允許下載文件。
·驗(yàn)證數(shù)字簽名是否合法。
·服務(wù)器當(dāng)前時(shí)間和下載請求時(shí)間的間隔是否超過設(shè)置的閾值。
在提供HTTP接口的Web服務(wù)器上,還提供代理服務(wù)器功能,并支持資源文件下載的高效緩存。
3.2.3 管理監(jiān)控系統(tǒng)
管理監(jiān)控系統(tǒng)為系統(tǒng)管理員提供系統(tǒng)資源全局視圖,管理員能掌握下列情況。
·文件系統(tǒng)整體拓?fù)浣Y(jié)構(gòu):tracker server和storage server服務(wù)器的數(shù)量;storage server分組情況。
·資源使用情況:每組storage server的存儲(chǔ)空間;每臺(tái)機(jī)器的資料利用率,包括CPU、IO、帶寬等。資源不足時(shí)系統(tǒng)自動(dòng)預(yù)警。
·用戶操作日志:包括文件上傳、刪除、系統(tǒng)緩存等操作。
·文件管理:包括文件編號(hào)、所在分組、文件大小、上傳時(shí)間、上傳的原始文件編號(hào)等。
·系統(tǒng)運(yùn)行管理:新增或刪除服務(wù)器、storage server之間同步數(shù)據(jù)、服務(wù)器啟停等。
本文實(shí)現(xiàn)的云存儲(chǔ)系統(tǒng)不需要索引服務(wù)器,通過文件名可以直接映射到storage server的分組和磁盤路徑,減少索引查找和路由時(shí)間,提高系統(tǒng)效率。具體實(shí)現(xiàn)方法是:在文件上傳時(shí),由storage server生成文件ID返回給業(yè)務(wù)系統(tǒng),文件ID包含storage server所屬的分組、磁盤、目錄、源storage server的IP地址、上傳時(shí)間;在文件下載時(shí),系統(tǒng)根據(jù)文件名定位到storage server分組,在分組中根據(jù)CPU、系統(tǒng)I/O、帶寬等資源空閑情況選擇相應(yīng)的storage server,storage server直接根據(jù)文件ID可直接定位到磁盤文件。
本文提出的系統(tǒng)設(shè)計(jì)方案通過路由服務(wù)器,多個(gè)storage server可同時(shí)提供并發(fā)訪問服務(wù)。當(dāng)并發(fā)訪問量增大時(shí),增加storage server可以提升系統(tǒng)整體的吞吐量。由于系統(tǒng)storage server可線性擴(kuò)展,系統(tǒng)理論上可支持無限大的并發(fā)訪問量。
為提高訪問效率,本文還針對(duì)移動(dòng)互聯(lián)網(wǎng)用戶在線應(yīng)用的特征,提出了一個(gè)高效的緩存實(shí)現(xiàn)方案。在音樂試聽?wèi)?yīng)用中,大多數(shù)用戶只聽音樂的前10 s內(nèi)容。根據(jù)這個(gè)特征,在做文件緩存時(shí),將資源文件分割成大小不等的若干片,例如一個(gè)3 MB的mp3文件共分成4片,每片在原始文 件 中 的 位 置 為:0~200 KB,200~800 KB,800~1.5 MB,1.5~3 MB。文件訪問時(shí),根據(jù)訪問內(nèi)容分片讀取文件并緩存。通過這樣的文件分片緩存方案,顯著增加數(shù)據(jù)訪問的緩存命中率,提升了用戶對(duì)資源文件訪問效率的體驗(yàn)。在系統(tǒng)實(shí)現(xiàn)上,緩存在HTTP接口的Web服務(wù)器上實(shí)現(xiàn)。
云存儲(chǔ)作為移動(dòng)互聯(lián)網(wǎng)應(yīng)用的一個(gè)基礎(chǔ)能力,用于多種移動(dòng)互聯(lián)網(wǎng)應(yīng)用。其核心價(jià)值在于為產(chǎn)品提供高速、高可靠、高擴(kuò)展性的存儲(chǔ)能力。云存儲(chǔ)即可直接作為產(chǎn)品,例如百度云等網(wǎng)絡(luò)U盤應(yīng)用,也可作為業(yè)務(wù)平臺(tái)的基礎(chǔ)設(shè)施,為平臺(tái)提供內(nèi)容存儲(chǔ)能力。隨著移動(dòng)互聯(lián)網(wǎng)不斷發(fā)展,各類創(chuàng)新的產(chǎn)品將層出不窮,但產(chǎn)品對(duì)存儲(chǔ)的依賴只會(huì)與日俱增。采用云存儲(chǔ)技術(shù),產(chǎn)品可方便地將需要持久化的信息存儲(chǔ)在云端,無需考慮存儲(chǔ)如何組織,如何保證可靠性、支持高速訪問等問題。
本文研發(fā)的云存儲(chǔ)系統(tǒng)已在“中國電信愛音樂”的相關(guān)項(xiàng)目中應(yīng)用,其中在音源、圖片、視頻存儲(chǔ),用戶上傳等方面都利用了云存儲(chǔ)系統(tǒng)提供的能力,取得了良好的效果。
愛音樂云存儲(chǔ)系統(tǒng)如圖3所示,可分為運(yùn)營服務(wù)層:負(fù)責(zé)內(nèi)容分發(fā)及訪問調(diào)度,主要包括移互平臺(tái)(愛音樂提供實(shí)時(shí)接口服務(wù)的業(yè)務(wù)平臺(tái));內(nèi)容管理層:負(fù)責(zé)內(nèi)容管理、轉(zhuǎn)碼等,主要包括ICM(愛音樂內(nèi)容管理系統(tǒng));存儲(chǔ)層:負(fù)責(zé)資源存儲(chǔ),主要包括資源存儲(chǔ)及服務(wù)系統(tǒng)。
圖3 愛音樂云存儲(chǔ)系統(tǒng)
以用戶使用客戶端上傳音樂為例,用戶在客戶端獲得上傳音樂的授權(quán)(通過移動(dòng)平臺(tái))之后,選擇要上傳的音樂,客戶端調(diào)用ICMS的文件上傳接口。ICMS接收文件并轉(zhuǎn)給資源存儲(chǔ)及服務(wù)系統(tǒng),后者生成文件指紋(文件唯一性特征值,通過文件指紋可識(shí)別不同的文件),根據(jù)文件指紋、大小等信息分配存儲(chǔ)空間,將文件寫入具體的存儲(chǔ)服務(wù)器,并保存文件的指紋、上傳時(shí)間、大小、位置等信息,生成訪問鏈接返回ICMS。ICMS保存上傳音樂的詳細(xì)信息,把文件訪問鏈接返回給客戶端,并自動(dòng)生成若干種碼率的音源文件,相關(guān)信息同步給移互平臺(tái)。用戶再次訪問上傳的音樂時(shí),移互平臺(tái)將根據(jù)用戶的網(wǎng)絡(luò)接入方式、終端類型等自動(dòng)適配音源碼率,返回最合適的音源訪問鏈接。
移動(dòng)互聯(lián)網(wǎng)正在飛速發(fā)展,云存儲(chǔ)對(duì)移動(dòng)互聯(lián)網(wǎng)來說是絕對(duì)的助推器。本文針對(duì)移動(dòng)互聯(lián)網(wǎng)對(duì)內(nèi)容存儲(chǔ)的需求,結(jié)合音樂在線服務(wù)的特點(diǎn),對(duì)云存儲(chǔ)技術(shù)在音樂領(lǐng)域的應(yīng)用進(jìn)行了探索,將來還要將云存儲(chǔ)技術(shù)運(yùn)用到更多應(yīng)用領(lǐng)域。
1 余慶.分布式文件系統(tǒng)概況及FastDFS介紹.http://www.docin.com/p-303753002.html,2010
2 陳鵬宇.云計(jì)算與移動(dòng)互聯(lián)網(wǎng).科技咨詢,2011(29)
3 羅國治.云計(jì)算技術(shù)與互聯(lián)網(wǎng)發(fā)展.2010云計(jì)算產(chǎn)業(yè)高峰論壇,2010
4 朱旭.移動(dòng)互聯(lián)網(wǎng)及其熱點(diǎn)技術(shù)分析.中國高新技術(shù)企業(yè).2010(20)