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