林清瀅 馮健文 陸錫聰
摘 要: 文件的存儲、管理以及隨時讀取是眾多現代企業的基本要求。分析了 Google App Engine開發技術;提出了基于Google云計算平臺的文件共享系統的設計方案;通過對Google App Engine開發環境的部署,實現了文件共享系統。
關鍵詞: Google App Engine; 云計算; 文件存儲; 文件共享
中圖分類號:TP311.5 文獻標志碼:A 文章編號: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 引言
隨著信息技術的高速發展,人們越來越多地使用計算機進行日常辦公,越來越多的文件從紙張變成了存儲在計算機中的數據。隨著時間的推移,不但數量與規模不斷增長,同時也有越來越多的業務需要使用這些文件。存儲、管理以及隨時讀取這些文件是現代很多企業的基本要求[1]。云計算作為一種新興的共享基礎架構,能把巨大的計算資源和存儲資源連接在一起,為用戶提供強大的信息、服務。
Google公司是目前最大的云計算服務提供商,從云計算服務的分類來看,其推出的Google App Engine(GAE)屬于云計算體系中的 PaaS(Platform as a Service,平臺即服務)層,主要是向用戶提供一個有限免費的“運行時環境”云計算平臺,允許用戶將應用系統“寄存”在Google的服務器上,并充分利用Google基礎架構提供的云計算能力[2]。通過使用GAE,開發人員可以在Google的服務器上運行和維護應用程序,而應用程序可根據訪問量和數據存儲需要的增長輕松地進行擴展。GAE包括分布式處理技術MapReduce、分布式文件系統GFS(Google File System)和分布式數據庫BigTable,這三大部分構成了在Google云平臺上實現云計算服務的基礎[3-4]。
1 系統的設計
1.1 系統架構設計
用戶通過客戶端訪問文件共享系統,系統將文件存儲在Google云計算平臺的GFS文件系統中,文件及用戶信息存儲在云計算平臺數據庫BigTable中,如圖1所示。
系統采用B/S三層結構(表示層、業務邏輯層、數據持久層)的設計模式。系統設計時,客戶端采用JSP,CSS設計頁面,同時內嵌JavaScript;在業務邏輯方面采用比較成熟的J2EE框架進行設計,實現了可擴展性,有較好的封裝性等面向對象設計特征;在數據方面,GAE平臺采用分布式對象數據庫,因此傳統的關系型數據庫無法直接使用,必須把關系型數據庫中的表映射成云平臺下的持久化對象,并產生XML數據文件,然后采用JDO或JPA技術將數據存儲到分布式數據庫Bigtable中,在系統中我們采用JPA技術實現數據持久化。
1.2 系統功能模塊設計
該系統按功能分為以下幾個部分。
⑴ 用戶管理模塊:對個人的信息管理,以及對下級用戶的權限管理。作為上級用戶具有添加/刪除下級用戶的權限、封閉/解除用戶的系統使用權。刪除用戶時,會刪除該用戶的文件上傳的記錄及存儲的文件。
⑵ 文件管理模塊:包括對文件進行上傳、搜索、下載、刪除、文件信息管理等一系列操作。文件上傳:將文件存入GFS文件系統的操作,并添加文件上傳的記錄。文件搜索:搜索文件時可按照文件名以及文件上傳時設置的關鍵字、主題搜索,并按照文件分享權限顯示文件列表。文件下載:下載文件的操作,添加文件下載的記錄。文件刪除:刪除文件的記錄和存儲的文件。文件信息管理:對文件分享方式、文件分類、文件名、文件搜索關鍵字等文件信息的管理。
1.3 持久化數據設計
GAE使用的BigTable數據庫,從某種意義上講它并不是“數據庫”,而是稱為“數據存儲區”(Datastore),Datastore與傳統關系型數據庫不同,Datastore中存儲的數據對象叫做實體(Entity),每個實體都可以擁有一個或多個屬性[5]。因此數據庫中的每個表都映射為一個實體類,表內的字段代表這個實體類的屬性。在系統中我們設計了用戶信息、文件信息、用戶上傳信息、下載信息等四個實體類,其中用戶信息表映射為實體類圖如圖2所示。
2 系統的實現
2.1 GAE云計算平臺的搭建和部署
由于GAE支持Java語言,通過GAE的Java運行環境,開發人員可以使用標準Java技術構建應用程序。因此,在Eclipse上搭建Google App Engine平臺,可先在本地模擬Google App Engine,調試完善后再將系統部署到GAE云平臺上。其具體的環境搭建和部署步驟如下[6]。
⑴ 安裝JDK和Eclipse。
⑵ 安裝Eclipse Google插件。運行Eclipse之后,在 Help -> Software Updates中獲取Google App Engine的插件Google Plugin for Eclipse。
⑶ 安裝Google App Engine的SDK。
⑷ 在本地機器上開發、調試系統。
⑸ 申請GAE空間。
⑹ 利用GAE自帶的上傳工具將系統部署到GAE平臺上。
2.2 用戶界面的實現
表示層的設計主要由JSP頁面、JavaScript腳本和CSS樣式表構成。該部分負責處理頁面顯示,完成系統與用戶的交互,當用戶驗證之后系統將會進入個人信息管理界面,按照權限,進入系統后界面也是不同的,如圖3所示。
2.3 數據持久層的實現
3 結束語
基于Google云計算平臺的文件共享系統與傳統的文件共享系統相比,在存儲空間、運行、安全模式等方面都具有無可比擬的優點。系統的設計與實現可充分利用Google的基礎架構運行該應用程序,應用程序可根據訪問量和數據存儲需要的增長自動地進行擴展;而且Google云計算平臺針對網絡應用程序存在的安全問題,僅提供對基礎操作系統的有限訪問權限,保證程序運行的安全性。同時,通過使用JPA,可以使代碼有統一的數據庫編程方式,這樣可以方便地使用云數據庫。該系統充分利用了云計算技術的特點,可為基于云計算技術的應用開發提供一定的參考。
參考文獻:
[1] 徐強,王振江著.云計算應用開發實踐[M].機械工業出版社,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實現GAE存儲[EB/OL]. http://www.ibm.com/developerworks/cn/java/j-gaestorage/#listing4,2011.4.11.
[6] Scott Granneman著,李強等譯.Google Apps應用完全指南[M].機械工業出版社,2009.