韓思宇 紀(jì)松江 胡海南 李茂毅



【摘要】Swift作為OpenStack云平臺(tái)的重要組件,Swift作為能夠提供RESTful HTTP 接口的對象存儲(chǔ)系統(tǒng),同時(shí)具備數(shù)據(jù)訪問靈活,數(shù)據(jù)持久性,高擴(kuò)展性等優(yōu)勢,被國內(nèi)外各大企業(yè)利用并開發(fā)。本文基于電子科技大學(xué)成都學(xué)院PBL的教學(xué)模式,將真實(shí)企業(yè)項(xiàng)目運(yùn)用到實(shí)際的教學(xué)環(huán)境中,同時(shí)將利用Swift提供的API接口,采用Python的Django框架,并調(diào)用Swift API接口,能夠利用Web界面并對Swift網(wǎng)盤進(jìn)行上傳,下載,預(yù)覽文件的功能。
1、需求背景分析
伴隨著大數(shù)據(jù)時(shí)代到來和信息化的飛速發(fā)展,人們對數(shù)據(jù)依賴程度越來越高,數(shù)據(jù)安全性和數(shù)據(jù)的存儲(chǔ)方式成為了目前人們重視的熱點(diǎn)問題,快速發(fā)展的云存儲(chǔ)技術(shù)為人們數(shù)據(jù)存儲(chǔ)帶來了極大的便利。眾所熟知的百度云盤,360云盤,騰訊云盤等都提供了方便,快捷的云存儲(chǔ)服務(wù),解決人們對存儲(chǔ)的需求,許多企業(yè)由于保密和安全,會(huì)組建專屬于企業(yè)內(nèi)部使用的網(wǎng)絡(luò),但這些企業(yè)在文件儲(chǔ)存上存在一下的問題:
1.1數(shù)據(jù)保障低
現(xiàn)在企業(yè)很多都是采用單機(jī)儲(chǔ)存的方式,同時(shí)企業(yè)職工習(xí)慣于將重要文件儲(chǔ)存于單機(jī)物理機(jī)中。由于,物理機(jī)面臨各種不確定因素,存儲(chǔ)能力有限,存儲(chǔ)拓展性不強(qiáng),為文件存儲(chǔ)帶來極大的危險(xiǎn)性和不確定性。
1.2數(shù)據(jù)共享能力低
文件共享可通過FTP,共享文件,移動(dòng)存儲(chǔ)設(shè)備等方式去實(shí)現(xiàn),但是針對于企業(yè)職工,使用FTP和文件的方式難以掌握,于是企業(yè)內(nèi)部往往采用移動(dòng)存儲(chǔ)設(shè)備去滿足文件共享,但是移動(dòng)存儲(chǔ)設(shè)備因其安全性低,易受到病毒的感染,會(huì)帶來企業(yè)內(nèi)部電腦的交叉感染,隨之產(chǎn)生文件安全性隱患。
1.3數(shù)據(jù)利用率低
由于文件存儲(chǔ)在各個(gè)物理機(jī)中,使得企業(yè)很難綜合的,集中化的管理企業(yè)文件,同時(shí)降低了企業(yè)內(nèi)部的工作效率,使得企業(yè)對數(shù)據(jù)利用程度不高,很多數(shù)據(jù)的潛在價(jià)值沒有發(fā)揮出來。
此時(shí)企業(yè)采用云盤是解決企業(yè)企業(yè)數(shù)據(jù)存儲(chǔ)和企業(yè)利用數(shù)據(jù)的很好選擇,同時(shí)企業(yè)自己搭建專有云盤變得尤為重要。通過企業(yè)私有云盤能夠有助于實(shí)現(xiàn)企業(yè)內(nèi)部的數(shù)據(jù)共享,數(shù)據(jù)存儲(chǔ)和企業(yè)工作協(xié)同能力的提供。
2、常見存儲(chǔ)系統(tǒng)分析
在目前的市面上,存在很多的主流的云存儲(chǔ)服務(wù),百度云,網(wǎng)易云,阿里云,騰訊云等相繼崛起,在國內(nèi)外的云存儲(chǔ)中占一席之地。究其分析,無論何種存儲(chǔ)服務(wù)或者是設(shè)備都可以分為:塊存儲(chǔ),文件存儲(chǔ)和對象存儲(chǔ)。目前采用DAS方式存儲(chǔ)的設(shè)備是采用的是文件存儲(chǔ)的方式;磁盤的陣列方式是采用塊存儲(chǔ)方式;OpenStack采用的是對象存儲(chǔ)的方式,最直接的體現(xiàn)就是Swift(對象存儲(chǔ)系統(tǒng))。他們之間因其存儲(chǔ)的組成部件,數(shù)據(jù)的管理方式,數(shù)據(jù)的訪問方式,數(shù)據(jù)的冗余方式的不同,但是三種不同的存儲(chǔ)方式也有各自的優(yōu)勢,比如:
塊存儲(chǔ):塊存儲(chǔ)具備低延遲,帶寬高的優(yōu)勢,常常用于高性能的計(jì)算,但是由于采用SAN系統(tǒng)架構(gòu)的網(wǎng)絡(luò),因其成本高,擴(kuò)展性差,靈活性不強(qiáng),數(shù)據(jù)共享能力低,不能較好的應(yīng)用和滿足成千上萬臺(tái)物理機(jī)的系統(tǒng)。
文件存儲(chǔ):文件存儲(chǔ)是把對文件的操作映射成對磁盤塊的操作,比如對文件的讀,寫,打開和關(guān)閉。其中以文件為傳輸協(xié)議,通過TCP/IP實(shí)現(xiàn)網(wǎng)絡(luò)間的數(shù)據(jù)交換,文件存儲(chǔ)簡單,擴(kuò)展性好,價(jià)格便宜,用戶管理簡單。但是由于采用的是文件傳輸協(xié)議,本身就帶來開支大,帶寬低,網(wǎng)絡(luò)延遲高,在高性能集群中不能較好的應(yīng)用。
對象存儲(chǔ):對象存儲(chǔ)采用的是內(nèi)容尋址的系統(tǒng)簡化對存儲(chǔ)系統(tǒng)的管理,確認(rèn)了存儲(chǔ)系統(tǒng)的存儲(chǔ)內(nèi)容的一致性,提供了較好的數(shù)據(jù)的可擴(kuò)展性,同時(shí)具備可以高速直接訪問磁盤文件和分布式文件訪問的特點(diǎn)。對象存儲(chǔ)能夠確保內(nèi)容的可靠性,能夠提供全局唯一,位置獨(dú)立的標(biāo)識(shí)符,擴(kuò)展性明顯高于采取塊存儲(chǔ)和文件存儲(chǔ)的系統(tǒng),所以非常適用于文件的歸檔、備份、海量文件共享、科學(xué)和研究數(shù)據(jù),以及數(shù)字媒體等應(yīng)用場景。
3、Swift網(wǎng)盤存儲(chǔ)平臺(tái)架構(gòu)
Swift是OpenSatck的開源項(xiàng)目,被稱為對象存儲(chǔ),而Swift使用標(biāo)準(zhǔn)化的服務(wù)器存儲(chǔ)數(shù)據(jù),是一個(gè)用于長久存儲(chǔ)靜態(tài)數(shù)據(jù),可以提供檢索,更新的數(shù)據(jù)服務(wù),Swift提供了強(qiáng)大的擴(kuò)展性,冗余性和持久性。
3.1功能設(shè)計(jì)
根據(jù)網(wǎng)盤功能要求,具體實(shí)現(xiàn)思路如下:
OpenSatck里任意租戶,租戶下有很多的用戶,針對任意用戶,能夠提供支持用戶的登錄和注冊。針對不同的用戶角色,能夠提供相應(yīng)的服務(wù),具體功能設(shè)計(jì)如下,注冊:實(shí)現(xiàn)用戶的注冊;登錄:實(shí)現(xiàn)用戶的登錄;容器:實(shí)現(xiàn)列出所有容器;容器:實(shí)現(xiàn)創(chuàng)建容器;容器:實(shí)現(xiàn)查看容器;列出容器下文件:實(shí)現(xiàn)列出容器下的所有文件;文件的上傳:實(shí)現(xiàn)文件的上傳;文件的下載:實(shí)現(xiàn)文件的下載;文件的預(yù)覽:實(shí)現(xiàn)文件的預(yù)覽。
系統(tǒng)的總體架構(gòu)設(shè)計(jì)如圖1Swift系統(tǒng)架構(gòu)邏輯設(shè)計(jì)如下:
整個(gè)Swift網(wǎng)盤采用Python的Django框架,Django是一個(gè)開源的Web應(yīng)用框架,其中采用的是MVC的軟件設(shè)計(jì)模式,里面包含了模型M,視圖V和控制器C,遵守MVC的設(shè)計(jì),但是在Django中,更加注重的是MTC的模式,即模型M,模板T和視圖C,各自功能如圖2所示如下:
3.2功能實(shí)現(xiàn)
由于文章的篇幅有限,本文將網(wǎng)盤實(shí)現(xiàn)的代碼所代表的重點(diǎn)功能,比如:登錄,文件的上傳和預(yù)覽功能詳細(xì)介紹。Swift網(wǎng)盤登錄功能實(shí)現(xiàn)界面如圖3登錄界面所示:
4、總結(jié)
目前OpenStack在國內(nèi)很流行,Swift作為一個(gè)很重要的組件,因其擴(kuò)展性好,高速訪問等優(yōu)勢,Swift對象存儲(chǔ)不但在OpenStack中占有重要地位,同時(shí)Swift擁有豐富的API接口,能夠?qū)ν馓峁┲匾拇鎯?chǔ)服務(wù)。無論是企業(yè),還是學(xué)校研究Swift對象存儲(chǔ)并基于Swift對象存儲(chǔ)開發(fā)Swift網(wǎng)盤具有廣泛且具深遠(yuǎn)的意義。本文所討論的Swift網(wǎng)盤設(shè)計(jì)與實(shí)現(xiàn)就是為這個(gè)存儲(chǔ)服務(wù)提供了良好且方便高效的解決方案。