胡玥申
?
基于云計(jì)算平臺(tái)的音樂(lè)專(zhuān)輯封面搜索應(yīng)用
胡玥申
摘 要:云計(jì)算平臺(tái)能夠帶來(lái)更低的硬件成本、開(kāi)發(fā)成本、運(yùn)行維護(hù)成本,并使得應(yīng)用更加安全可靠。在國(guó)內(nèi)首個(gè)公有云計(jì)算平臺(tái)Sina App Engine(以下簡(jiǎn)稱(chēng)SAE)上,基于iTunes Store提供的Web服務(wù)搜索API設(shè)計(jì)并開(kāi)發(fā)了音樂(lè)專(zhuān)輯封面搜索應(yīng)用,供廣大音樂(lè)愛(ài)好者以及相關(guān)用戶搜索獲取音樂(lè)專(zhuān)輯的高質(zhì)量封面圖像。
關(guān)鍵詞:云計(jì)算;Web應(yīng)用;圖片搜索
云計(jì)算是一個(gè)近來(lái)熱門(mén)的名詞,該名詞的出現(xiàn)在國(guó)外約已有4、5年的歷史。云計(jì)算平臺(tái)通常需要為分布式Web服務(wù)提供一整套的解決方案,并且需要強(qiáng)調(diào)安全性和可靠性,這就對(duì)整體的架構(gòu)設(shè)計(jì)和技術(shù)實(shí)現(xiàn)提出了苛刻的要求。
本文描述的音樂(lè)專(zhuān)輯封面搜索應(yīng)用建立在國(guó)內(nèi)的首個(gè)公有云計(jì)算平臺(tái)SAE的分布式Web服務(wù)平臺(tái)上。該應(yīng)用主要想要解決的問(wèn)題在于給音樂(lè)愛(ài)好者提供一個(gè)方便搜索高質(zhì)量專(zhuān)輯封面圖像的工具。
隨著數(shù)字多媒體技術(shù)的不斷發(fā)展與流行,越來(lái)越多的音樂(lè)專(zhuān)輯選擇了數(shù)字發(fā)行的方式,數(shù)字格式的專(zhuān)輯封面也被越來(lái)越廣泛地應(yīng)用。專(zhuān)輯封面和普通圖片不同的是,它有唯一正確性以及對(duì)質(zhì)量的要求。發(fā)行的音樂(lè)專(zhuān)輯封面在官方發(fā)行后便是唯一確定的,否則就失去了官方價(jià)值。同時(shí)用戶對(duì)專(zhuān)輯封面的質(zhì)量也存在一定的要求,因此普通的圖片搜索引擎就并不能很好地滿足,而需要一個(gè)比較專(zhuān)門(mén)化的只關(guān)注音樂(lè)專(zhuān)輯封面的搜索引擎。這就是本文研究的目的所在。
1.1 Sina App Engine
SAE是國(guó)內(nèi)首個(gè)公有云計(jì)算平臺(tái)。它提供了一系列分布式計(jì)算、存儲(chǔ)服務(wù)供開(kāi)發(fā)者使用,其中包括分布式文件存儲(chǔ)、分布式數(shù)據(jù)庫(kù)集群、分布式緩存、分布式定時(shí)服務(wù)等,這些服務(wù)將大大降低開(kāi)發(fā)者的開(kāi)發(fā)成本。而SAE整體架構(gòu)的高可靠性也大大降低了開(kāi)發(fā)者的運(yùn)營(yíng)風(fēng)險(xiǎn)。
從架構(gòu)上SAE采用分層設(shè)計(jì),自上而下分別為:
1)反向代理層:在最外層的是HTTP反向代理,負(fù)責(zé)響應(yīng)用戶的HTTP請(qǐng)求,并且提供負(fù)載均衡、健康檢查等功能。
2)路由邏輯層:邏輯層負(fù)責(zé)根據(jù)請(qǐng)求的唯一標(biāo)識(shí)快速地映射到相應(yīng)的Web服務(wù)池和硬件路徑。由于該層隱藏了很多具體地址信息,因此,使得開(kāi)發(fā)者無(wú)需關(guān)心服務(wù)內(nèi)部地實(shí)際分配情況。
3)Web計(jì)算服務(wù)池:每個(gè)Web服務(wù)進(jìn)程實(shí)際處理用戶的HTTP請(qǐng)求,進(jìn)程運(yùn)行在HTTP服務(wù)沙盒內(nèi),同時(shí)還內(nèi)嵌PHP解析引擎。用戶代碼最終通過(guò)接口來(lái)調(diào)用各種服務(wù)。
4)日志和統(tǒng)計(jì)中心:日志和統(tǒng)計(jì)中心負(fù)責(zé)對(duì)用戶所使用的服務(wù)進(jìn)行統(tǒng)計(jì)和資源計(jì)費(fèi),并通過(guò)設(shè)定分鐘配額來(lái)判定是否有非正常使用的情況。當(dāng)資源消耗的速度超過(guò)某一個(gè)預(yù)警閾值時(shí),SAE通知系統(tǒng)便會(huì)向用戶發(fā)出預(yù)警。所有服務(wù)的日志會(huì)被匯總并備份,并提供檢索查詢服務(wù)。
5)各種分布式服務(wù):SAE提供覆蓋了Web應(yīng)用開(kāi)發(fā)多方面的各種服務(wù),供用戶去方便地調(diào)用。
iTunes Store音樂(lè)商店
1.2.1 iTunes Store簡(jiǎn)介
iTunes Store是一個(gè)由蘋(píng)果公司營(yíng)運(yùn)的音樂(lè)商店。如今iTunes Store已經(jīng)售出超過(guò)60億首歌曲,全球線上音樂(lè)銷(xiāo)售量占有超過(guò)70%。
1.2.1 iTunes Store Web服務(wù)搜索API
iTunes Store提供可以免費(fèi)使用的Web服務(wù)搜索API,供開(kāi)發(fā)者集成在自己的Web應(yīng)用中,達(dá)到搜索iTunes Store中相關(guān)內(nèi)容的功能。我們只需要將URL+不同參數(shù)的形式傳遞給iTunes Store,就可以快速地獲得返回結(jié)果。搜索API中支持的一些主要參數(shù)如表1所示:
表1 iTunes Store Web服務(wù)搜索API參數(shù)表
搜索API的結(jié)果是以JSON形式返回的。同樣我們將一些重要的返回的JSON中可能包含的的鍵值對(duì)如表2所示:
表2 iTunes Store Web服務(wù)搜索API返回JSON鍵值對(duì)
2.1 數(shù)據(jù)來(lái)源
通過(guò)開(kāi)放的搜索API,我們得以使用iTunes Store的數(shù)據(jù)庫(kù)作為本應(yīng)用的數(shù)據(jù)來(lái)源。
iTunes Store數(shù)據(jù)庫(kù)內(nèi)容全面,并且內(nèi)容由唱片公司官方提供,因此,數(shù)據(jù)的準(zhǔn)確性也是十分出色。同時(shí),專(zhuān)輯封面圖像質(zhì)量高,開(kāi)放的搜索API更是讓資源的使用也變得更方便,降低開(kāi)發(fā)成本,因此,選擇它作為本應(yīng)用的數(shù)據(jù)來(lái)源十分理想。
2.2 搜索模塊
搜索模塊主要負(fù)責(zé)兩個(gè)功能,一個(gè)是根據(jù)iTunes Store的搜索API進(jìn)行基于關(guān)鍵詞的模糊查找,另一功能則是直接根據(jù)iTunes鏈接,通過(guò)lookup請(qǐng)求進(jìn)行精確的查找。
2.2.1 模糊查找
模糊查找模塊通過(guò)iTunes Store搜索API來(lái)通過(guò)關(guān)鍵詞搜索iTunes Store中的相關(guān)內(nèi)容。在搜索請(qǐng)求的參數(shù)中,term來(lái)自于用戶輸入的關(guān)鍵字,其它一些字段由本應(yīng)用自動(dòng)填充。另外地,我們將參數(shù)entity設(shè)定為album,將搜索范圍限定在了音樂(lè)專(zhuān)輯,出于展示頁(yè)面排版布局的考慮參數(shù)limit被設(shè)置為了28。
在這樣的情況下,當(dāng)用戶輸入的搜索關(guān)鍵詞為example,搜索請(qǐng)求URL將成為如下所示:
http://itunes.apple.com/search?term=example&limit=28& entity=album
應(yīng)用將在用戶表單提交以后,自動(dòng)獲取用戶輸入的關(guān)鍵詞字段,然后拼接成上述的URL提交給iTunes Store等待搜索結(jié)果。
iTunes Store將以JSON格式回復(fù)搜索結(jié)果,隨后服務(wù)器端將對(duì)獲取的JSON對(duì)象進(jìn)行解析,并在網(wǎng)頁(yè)端更新。為了提升網(wǎng)站的相應(yīng)速度和減少與iTunes Store之間的信息交換,本應(yīng)用還采取了一定的緩存機(jī)制。
當(dāng)用戶提交關(guān)鍵詞之后,應(yīng)用會(huì)先檢查此關(guān)鍵詞的對(duì)應(yīng)JSON結(jié)果是否已被緩存。如果是,則會(huì)直接返回緩存的結(jié)果,而并不會(huì)將請(qǐng)求發(fā)送至iTunes Store。
反之,如果關(guān)鍵詞的搜索結(jié)果并沒(méi)有在緩存中被找到,我們則會(huì)發(fā)送一個(gè)針對(duì)此關(guān)鍵詞的緩存更新請(qǐng)求。根據(jù)緩存更新請(qǐng)求的數(shù)量,我們可以單獨(dú)或者進(jìn)行批處理一并將搜索請(qǐng)求URL發(fā)送至iTunes Store服務(wù)器,并將返回的結(jié)果存入服務(wù)器本地緩存后更新至應(yīng)用網(wǎng)頁(yè)端。
2.2.2 精確查找
精確查找是通過(guò)給定的iTunes鏈接來(lái)查找唯一(如果存在)的結(jié)果。一個(gè)iTunes Store鏈接的形式如下:
https://itunes.apple.com/us/album/example/id12345678
其中專(zhuān)輯的唯一標(biāo)識(shí)符id是顯式給出的。因此當(dāng)用戶在表單中輸入一個(gè)iTunes Store鏈接并提交,我們可以從這個(gè)鏈接中直接提取出id值。
然后,我們可以同樣通過(guò)拼接URL使用lookup請(qǐng)求來(lái)獲得結(jié)果。拼接后的URL如下:
http://itunes.apple.com/lookup?id=12345678
同樣,如果此id值的對(duì)應(yīng)結(jié)果并沒(méi)有在服務(wù)器的本地緩存中,應(yīng)用會(huì)將此URL提交給iTunes Store并等待查詢結(jié)果。反之我們就可以直接采用緩存的結(jié)果提高效率,并且減少和iTunes Store之間的通信。
2.3 展示模塊
在獲得搜索結(jié)果以后,我們可以從返回的JSON中的artworkUrl60中得到相應(yīng)的封面圖像的地址。
2.3.1 列表展示
當(dāng)用戶使用模糊查找功能時(shí),得到的返回結(jié)果并不一定是唯一的,而可能是0到28中的任意整數(shù)個(gè)。因此我們需要使用一個(gè)列表來(lái)展示這些結(jié)果。列表中我們使用的是專(zhuān)輯封面的縮略圖,而60x60像素大小的圖片正好滿足了這一需求。
2.3.2 單封面展示
當(dāng)用戶使用的是精確查找,或者通過(guò)點(diǎn)擊列表頁(yè)面中的某一個(gè)專(zhuān)輯封面,我們將跳轉(zhuǎn)到一個(gè)單封面展示的頁(yè)面。在這個(gè)頁(yè)面,我們將提供不同尺寸大小的同一封面圖像供用戶選擇,方便于應(yīng)用在不同的情況下,如個(gè)人頭像,縮略圖,文章插圖,背景大圖等等,用戶可以根據(jù)個(gè)人所需選擇適合的尺寸大小。
2.4 流程圖
綜上所述,本應(yīng)用的整個(gè)使用過(guò)程如圖1所示:
圖1 應(yīng)用流程
3.1 開(kāi)發(fā)環(huán)境
本應(yīng)用選擇架設(shè)在SAE分布式Web服務(wù)開(kāi)發(fā)平臺(tái)上,SAE上的每個(gè)應(yīng)用都有給定的服務(wù)限制和配額設(shè)定。該配額經(jīng)過(guò)嚴(yán)格計(jì)算得出的,因此能夠滿足大部分應(yīng)用的需要,而不容易受到限制的影響。
3.1.1 后臺(tái)語(yǔ)言
本應(yīng)用使用的后臺(tái)腳本語(yǔ)言為PHP,它的語(yǔ)法混合了C、Java、Perl和PHP自創(chuàng)的語(yǔ)法。它可以比CGI或者Perl更快速地執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè),并且用PHP做出的動(dòng)態(tài)頁(yè)面執(zhí)行效率也比完全生成HTML標(biāo)記的CGI要高許多。
3.1.2 前臺(tái)交互界面
本應(yīng)用使用的前臺(tái)開(kāi)發(fā)使用了主流的HTML5+CSS3+ JQuery的框架。
HTML5和CSS3是兩項(xiàng)新的Web技術(shù)標(biāo)準(zhǔn),代表了下一代HTML和CSS技術(shù)。JQuery是一個(gè)優(yōu)秀的Javascript框架。它是輕量級(jí)的js庫(kù) ,不僅兼容CSS3,還兼容各種瀏覽器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使開(kāi)發(fā)者能更方便地處理事件、實(shí)現(xiàn)動(dòng)畫(huà)效果,并且方便地為網(wǎng)站提供異步交互。
3.2 頁(yè)面設(shè)計(jì)
在頁(yè)面設(shè)計(jì)上,本應(yīng)用采用了極簡(jiǎn)風(fēng)格,既在視覺(jué)上保證了整潔美觀,同時(shí)又能夠突出應(yīng)用的功能性,其框架圖如圖2所示:
圖2 搜索界面 結(jié)果列表界面 單結(jié)果展示界面
3.2.1 搜索頁(yè)面
在搜索頁(yè)面上,我們只保留大圖標(biāo)與搜索框,盡可能地突出搜索的功能。搜索框使用了CSS3標(biāo)準(zhǔn)的圓角屬性以及動(dòng)畫(huà)屬性,隨著焦點(diǎn)的獲得與失去伴隨著動(dòng)畫(huà)效果自由伸展。
3.2.2 結(jié)果列表頁(yè)面
當(dāng)用戶使用模糊搜索功能,將有至多28條條結(jié)果以網(wǎng)格的方式顯示在結(jié)果列表頁(yè)面上。網(wǎng)格的尺寸將根據(jù)瀏覽器寬度自適應(yīng)地改變。
3.3.3 單結(jié)果展示頁(yè)面
當(dāng)用戶最終選定某一結(jié)果并點(diǎn)擊,應(yīng)用將跳轉(zhuǎn)到單結(jié)果展示頁(yè)面。
在這個(gè)頁(yè)面上,我們將自右向左依次展示1400x1400像素,1200x1200像素,600x600像素,170x170像素四種尺寸大小的專(zhuān)輯封面。點(diǎn)擊任何一張圖片都會(huì)直接跳轉(zhuǎn)到圖片地址本身,供用戶下載。
在配色風(fēng)格上,這個(gè)頁(yè)面將根據(jù)專(zhuān)輯封面圖像內(nèi)容顏色的不同自動(dòng)匹配相應(yīng)的背景色。頁(yè)面下方的藍(lán)色按鈕鏈接會(huì)對(duì)應(yīng)專(zhuān)輯在iTunes Store的相應(yīng)頁(yè)面,通過(guò)點(diǎn)擊可以前往iTunes Store。
本應(yīng)用開(kāi)發(fā)于并架設(shè)在SAE云計(jì)算平臺(tái)上,并利用iTunes Store音樂(lè)商店提供的開(kāi)放Web服務(wù)搜索API,完成了模糊搜索與精確搜索音樂(lè)專(zhuān)輯封面圖像的兩個(gè)功能。
應(yīng)用在開(kāi)發(fā)完成后定名Coverbox,中文名“封面盒子”,以SAE平臺(tái)提供的二級(jí)域名“http://coverbox.sinaapp.com”上線,上線至今已經(jīng)已經(jīng)獲得不俗的訪問(wèn)量。
由于數(shù)據(jù)來(lái)源的官方性,本應(yīng)用的搜索結(jié)果非常準(zhǔn)確,也因此獲得國(guó)內(nèi)知名線上音樂(lè)論壇Ukaban官方推薦的音樂(lè)專(zhuān)輯封面獲取工具。
在未來(lái),希望該應(yīng)用能夠在平穩(wěn)運(yùn)行的基礎(chǔ)上進(jìn)一步改進(jìn)功能,提供更靈活的搜索方式,并且更好地運(yùn)用分布式Web服務(wù)的各種特性,讓?xiě)?yīng)用能夠更加完善,并且更安全可靠
參考文獻(xiàn)
[1] comScore.互聯(lián)網(wǎng)現(xiàn)狀與趨勢(shì)探究[J]. 聲屏世界·廣告人,2013年02期.
[2] 叢磊. Sina App Engine 架構(gòu)——云計(jì)算時(shí)代的分布式Web 服務(wù)解決方案[J]. 程序員, 2010 (011): 59-62.
[3] 馬新強(qiáng), 孫兆, 袁哲, 等. Web 標(biāo)準(zhǔn)與 HTML5 的核心技術(shù)研究[J]. 重慶文理學(xué)院學(xué)報(bào): 自然科學(xué)版, 2010, 29(006): 61-64.
[4] 叢磊. 新浪云計(jì)算 SAE 的技術(shù)演變[J].程序員 2013 (004): 58-61.
[5] 陳理捷. 微創(chuàng)業(yè): 從開(kāi)放平臺(tái)和云計(jì)算開(kāi)始[J].程序員2011 (003): 62-64.
Cloud Based Music Album Cover Search Application
Hu Yueshen
(1.Software School, Fudan University, Shanghai 201203, China; 2.Shanghai Key Laboratory of Intelligent Information Processing (Fudan University), Shanghai 201203, China; 3.Public Performance and Information Research Center, Fudan University, Shanghai 201203, China)
Abstract:Cloud-computing platforms can reduce the cost of hardware, development and maintenance of the applications running on it andalso make them more secure. We design and develop a music album cover search application based on iTunes Store’s web service search API on Sina App Engine, the first public cloud-computing platform in China. The application is for music lovers and users to search for high quality cover images of music albums.
Key words:Cloud-computing; WebApp; Image Search
收稿日期:(2015.06.09)
作者簡(jiǎn)介:胡玥申(1992-),男,廣州,復(fù)旦大學(xué)軟件學(xué)院,上海市智能信息處理重點(diǎn)實(shí)驗(yàn)室(復(fù)旦大學(xué)),復(fù)旦大學(xué)公共績(jī)效與信息化研究中心,碩士研究生,研究方向:電子商務(wù)與電子政務(wù),上海 201203
文章編號(hào):1007-757X(2016)02-0071-03
中圖分類(lèi)號(hào):TP311
文獻(xiàn)標(biāo)志碼:A