林清瀅 馮健文 陸錫聰
摘 要: 文件的存儲(chǔ)、管理以及隨時(shí)讀取是眾多現(xiàn)代企業(yè)的基本要求。分析了 Google App Engine開發(fā)技術(shù);提出了基于Google云計(jì)算平臺(tái)的文件共享系統(tǒng)的設(shè)計(jì)方案;通過對(duì)Google App Engine開發(fā)環(huán)境的部署,實(shí)現(xiàn)了文件共享系統(tǒng)。
關(guān)鍵詞: Google App Engine; 云計(jì)算; 文件存儲(chǔ); 文件共享
中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2014)07-23-03
Abstract: Storage, management, and readout have become the basic requirements of modern enterprises. The Google App Engine development technology is analyzed. The design scheme of the file sharing system is presented based on Google cloud platform. Through the deployment of Google App Engine development environment, file sharing system is realized.
Key words: Google App Engine; cloud computing; file storing; file sharing
0 引言
隨著信息技術(shù)的高速發(fā)展,人們?cè)絹碓蕉嗟厥褂糜?jì)算機(jī)進(jìn)行日常辦公,越來越多的文件從紙張變成了存儲(chǔ)在計(jì)算機(jī)中的數(shù)據(jù)。隨著時(shí)間的推移,不但數(shù)量與規(guī)模不斷增長(zhǎng),同時(shí)也有越來越多的業(yè)務(wù)需要使用這些文件。存儲(chǔ)、管理以及隨時(shí)讀取這些文件是現(xiàn)代很多企業(yè)的基本要求[1]。云計(jì)算作為一種新興的共享基礎(chǔ)架構(gòu),能把巨大的計(jì)算資源和存儲(chǔ)資源連接在一起,為用戶提供強(qiáng)大的信息、服務(wù)。
Google公司是目前最大的云計(jì)算服務(wù)提供商,從云計(jì)算服務(wù)的分類來看,其推出的Google App Engine(GAE)屬于云計(jì)算體系中的 PaaS(Platform as a Service,平臺(tái)即服務(wù))層,主要是向用戶提供一個(gè)有限免費(fèi)的“運(yùn)行時(shí)環(huán)境”云計(jì)算平臺(tái),允許用戶將應(yīng)用系統(tǒng)“寄存”在Google的服務(wù)器上,并充分利用Google基礎(chǔ)架構(gòu)提供的云計(jì)算能力[2]。通過使用GAE,開發(fā)人員可以在Google的服務(wù)器上運(yùn)行和維護(hù)應(yīng)用程序,而應(yīng)用程序可根據(jù)訪問量和數(shù)據(jù)存儲(chǔ)需要的增長(zhǎng)輕松地進(jìn)行擴(kuò)展。GAE包括分布式處理技術(shù)MapReduce、分布式文件系統(tǒng)GFS(Google File System)和分布式數(shù)據(jù)庫(kù)BigTable,這三大部分構(gòu)成了在Google云平臺(tái)上實(shí)現(xiàn)云計(jì)算服務(wù)的基礎(chǔ)[3-4]。
1 系統(tǒng)的設(shè)計(jì)
1.1 系統(tǒng)架構(gòu)設(shè)計(jì)
用戶通過客戶端訪問文件共享系統(tǒng),系統(tǒng)將文件存儲(chǔ)在Google云計(jì)算平臺(tái)的GFS文件系統(tǒng)中,文件及用戶信息存儲(chǔ)在云計(jì)算平臺(tái)數(shù)據(jù)庫(kù)BigTable中,如圖1所示。
系統(tǒng)采用B/S三層結(jié)構(gòu)(表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層)的設(shè)計(jì)模式。系統(tǒng)設(shè)計(jì)時(shí),客戶端采用JSP,CSS設(shè)計(jì)頁(yè)面,同時(shí)內(nèi)嵌JavaScript;在業(yè)務(wù)邏輯方面采用比較成熟的J2EE框架進(jìn)行設(shè)計(jì),實(shí)現(xiàn)了可擴(kuò)展性,有較好的封裝性等面向?qū)ο笤O(shè)計(jì)特征;在數(shù)據(jù)方面,GAE平臺(tái)采用分布式對(duì)象數(shù)據(jù)庫(kù),因此傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)無法直接使用,必須把關(guān)系型數(shù)據(jù)庫(kù)中的表映射成云平臺(tái)下的持久化對(duì)象,并產(chǎn)生XML數(shù)據(jù)文件,然后采用JDO或JPA技術(shù)將數(shù)據(jù)存儲(chǔ)到分布式數(shù)據(jù)庫(kù)Bigtable中,在系統(tǒng)中我們采用JPA技術(shù)實(shí)現(xiàn)數(shù)據(jù)持久化。
1.2 系統(tǒng)功能模塊設(shè)計(jì)
該系統(tǒng)按功能分為以下幾個(gè)部分。
⑴ 用戶管理模塊:對(duì)個(gè)人的信息管理,以及對(duì)下級(jí)用戶的權(quán)限管理。作為上級(jí)用戶具有添加/刪除下級(jí)用戶的權(quán)限、封閉/解除用戶的系統(tǒng)使用權(quán)。刪除用戶時(shí),會(huì)刪除該用戶的文件上傳的記錄及存儲(chǔ)的文件。
⑵ 文件管理模塊:包括對(duì)文件進(jìn)行上傳、搜索、下載、刪除、文件信息管理等一系列操作。文件上傳:將文件存入GFS文件系統(tǒng)的操作,并添加文件上傳的記錄。文件搜索:搜索文件時(shí)可按照文件名以及文件上傳時(shí)設(shè)置的關(guān)鍵字、主題搜索,并按照文件分享權(quán)限顯示文件列表。文件下載:下載文件的操作,添加文件下載的記錄。文件刪除:刪除文件的記錄和存儲(chǔ)的文件。文件信息管理:對(duì)文件分享方式、文件分類、文件名、文件搜索關(guān)鍵字等文件信息的管理。
1.3 持久化數(shù)據(jù)設(shè)計(jì)
GAE使用的BigTable數(shù)據(jù)庫(kù),從某種意義上講它并不是“數(shù)據(jù)庫(kù)”,而是稱為“數(shù)據(jù)存儲(chǔ)區(qū)”(Datastore),Datastore與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)不同,Datastore中存儲(chǔ)的數(shù)據(jù)對(duì)象叫做實(shí)體(Entity),每個(gè)實(shí)體都可以擁有一個(gè)或多個(gè)屬性[5]。因此數(shù)據(jù)庫(kù)中的每個(gè)表都映射為一個(gè)實(shí)體類,表內(nèi)的字段代表這個(gè)實(shí)體類的屬性。在系統(tǒng)中我們?cè)O(shè)計(jì)了用戶信息、文件信息、用戶上傳信息、下載信息等四個(gè)實(shí)體類,其中用戶信息表映射為實(shí)體類圖如圖2所示。
2 系統(tǒng)的實(shí)現(xiàn)
2.1 GAE云計(jì)算平臺(tái)的搭建和部署
由于GAE支持Java語言,通過GAE的Java運(yùn)行環(huán)境,開發(fā)人員可以使用標(biāo)準(zhǔn)Java技術(shù)構(gòu)建應(yīng)用程序。因此,在Eclipse上搭建Google App Engine平臺(tái),可先在本地模擬Google App Engine,調(diào)試完善后再將系統(tǒng)部署到GAE云平臺(tái)上。其具體的環(huán)境搭建和部署步驟如下[6]。
⑴ 安裝JDK和Eclipse。
⑵ 安裝Eclipse Google插件。運(yùn)行Eclipse之后,在 Help -> Software Updates中獲取Google App Engine的插件Google Plugin for Eclipse。
⑶ 安裝Google App Engine的SDK。
⑷ 在本地機(jī)器上開發(fā)、調(diào)試系統(tǒng)。
⑸ 申請(qǐng)GAE空間。
⑹ 利用GAE自帶的上傳工具將系統(tǒng)部署到GAE平臺(tái)上。
2.2 用戶界面的實(shí)現(xiàn)
表示層的設(shè)計(jì)主要由JSP頁(yè)面、JavaScript腳本和CSS樣式表構(gòu)成。該部分負(fù)責(zé)處理頁(yè)面顯示,完成系統(tǒng)與用戶的交互,當(dāng)用戶驗(yàn)證之后系統(tǒng)將會(huì)進(jìn)入個(gè)人信息管理界面,按照權(quán)限,進(jìn)入系統(tǒng)后界面也是不同的,如圖3所示。
2.3 數(shù)據(jù)持久層的實(shí)現(xiàn)
3 結(jié)束語
基于Google云計(jì)算平臺(tái)的文件共享系統(tǒng)與傳統(tǒng)的文件共享系統(tǒng)相比,在存儲(chǔ)空間、運(yùn)行、安全模式等方面都具有無可比擬的優(yōu)點(diǎn)。系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)可充分利用Google的基礎(chǔ)架構(gòu)運(yùn)行該應(yīng)用程序,應(yīng)用程序可根據(jù)訪問量和數(shù)據(jù)存儲(chǔ)需要的增長(zhǎng)自動(dòng)地進(jìn)行擴(kuò)展;而且Google云計(jì)算平臺(tái)針對(duì)網(wǎng)絡(luò)應(yīng)用程序存在的安全問題,僅提供對(duì)基礎(chǔ)操作系統(tǒng)的有限訪問權(quán)限,保證程序運(yùn)行的安全性。同時(shí),通過使用JPA,可以使代碼有統(tǒng)一的數(shù)據(jù)庫(kù)編程方式,這樣可以方便地使用云數(shù)據(jù)庫(kù)。該系統(tǒng)充分利用了云計(jì)算技術(shù)的特點(diǎn),可為基于云計(jì)算技術(shù)的應(yīng)用開發(fā)提供一定的參考。
參考文獻(xiàn):
[1] 徐強(qiáng),王振江著.云計(jì)算應(yīng)用開發(fā)實(shí)踐[M].機(jī)械工業(yè)出版社,2012.
[2] BOSS G, MALLADI P, QUAN D, LEGREGNI L, HALL H. Cloudcomputing[EB/OL]. http://download. boulder.ibm.com/ibmdl/pub/software/dw/wes/hipods/Cloud_computing_wp_final_8Oct.pdf.2007-10-8
[3] Eugene Ciurana. Developing with Google App Engine[M].Berkeley:Apress,2009.
[4] Fay Chang,Jeffrey Dean,Sanjay Ghemawat.Bigtable: A Distributed Storage System for Structured Data[J]. ACM Transactions on Computer Systems,2008.26(2):205-218
[5] John Wheeler.使用Bigtable、Blobstore和Google Storage實(shí)現(xiàn)GAE存儲(chǔ)[EB/OL]. http://www.ibm.com/developerworks/cn/java/j-gaestorage/#listing4,2011.4.11.
[6] Scott Granneman著,李強(qiáng)等譯.Google Apps應(yīng)用完全指南[M].機(jī)械工業(yè)出版社,2009.