劉瑋瑋
(淮安淮網(wǎng)科技有限公司,江蘇淮安,223001)
云盤存儲(chǔ)近幾年己被廣泛的應(yīng)用在企業(yè)和個(gè)人的數(shù)據(jù)存儲(chǔ)中。云盤存儲(chǔ)不再像硬盤存儲(chǔ)設(shè)備那樣必須隨身攜帶,人們可以在任意時(shí)刻通過(guò)互聯(lián)網(wǎng)獲取到存儲(chǔ)在云盤上的數(shù)據(jù)。如今,移動(dòng)互聯(lián)網(wǎng)技術(shù)迅猛發(fā)展。傳統(tǒng)的互聯(lián)網(wǎng)與移動(dòng)通信技術(shù)的完美結(jié)合,使得移動(dòng)設(shè)備可以通過(guò)WIFI、3G、4G技術(shù)連接到網(wǎng)絡(luò)訪問(wèn)數(shù)據(jù)資源。本文通過(guò)研究Openstack+Swift的系統(tǒng)架構(gòu),提出了基于該架構(gòu)之上的偽文件系統(tǒng),并實(shí)現(xiàn)了偽文件系統(tǒng)中各項(xiàng)操作,將這些復(fù)雜的后臺(tái)實(shí)現(xiàn)技術(shù)與算法進(jìn)行封裝,讓用戶在客戶端上做簡(jiǎn)單的操作就可以完成復(fù)雜的云存儲(chǔ)過(guò)程,實(shí)現(xiàn)云盤的各項(xiàng)操作。

圖1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)圖
使用Openstack的云存儲(chǔ)Swift,構(gòu)建網(wǎng)盤客戶端APP,實(shí)現(xiàn)常規(guī)的文件操作。常規(guī)的網(wǎng)盤功能包括登錄、獲取文件列表、分類、上傳、新建、拍照上傳、移動(dòng)、復(fù)制、下載、刪除、還原、打開(kāi)和查找等。
(1)Swift云存儲(chǔ)云端服務(wù):能夠連接OpenStack Swift云存儲(chǔ),需要在Android端引入SDK,同樣使用上面的 SDK項(xiàng)目包(openstack-java-sdk)。目前 SDK是成熟的工程,直接引入項(xiàng)目包。實(shí)現(xiàn)的原理基于HTTP協(xié)議連接云存儲(chǔ)Swift Restful服務(wù)。同樣使用SKD項(xiàng)目包中封裝的OpenStackClientService進(jìn)行異步網(wǎng)絡(luò)操作。
(2)登錄:還原和登錄各定義一個(gè)Activity。Swift賬戶管理使用Keystone完成,這里需要Keystone的訪問(wèn)SDK,openstack-java-sdk提供了對(duì)OpenStack各服務(wù)訪問(wèn)的接口,可以直接使用。
(3)文件系統(tǒng):目前SDK提供了對(duì)Swift云存儲(chǔ)的操作,云存儲(chǔ)不是一種文件系統(tǒng)(File System),為了實(shí)現(xiàn)文件,基于Swift的SDK接口,封裝模擬文件操作的類文件系統(tǒng),命名為OssFilesystem。
(4)主界面:使用一個(gè)Activity來(lái)完成主界面,導(dǎo)航通過(guò)NavigationView控件實(shí)現(xiàn)、文件列表通過(guò)Fragment來(lái)實(shí)現(xiàn)。不同的分類操作不同,我們使用不同的Fragment實(shí)現(xiàn),降低程序的復(fù)雜性。
(5)所有文檔:實(shí)現(xiàn)展示所有文件類別,采用Fragment。
(6)分類:實(shí)現(xiàn)文檔、圖片、視頻分類的文件列表,采用Fragment。
(7)回收站:實(shí)現(xiàn)回收站的文件列表,采用Fragment。
(8)文件上傳:上傳本地文件,實(shí)現(xiàn)一個(gè)本地存儲(chǔ)文件導(dǎo)航選擇窗口Activity,完成文件選擇和上傳。工具類,包括文件操作,處理本地緩存,一個(gè)文件打開(kāi)時(shí),需要下載本地。同時(shí)了提供性能,對(duì)當(dāng)前操作文件路徑進(jìn)行緩存,跟蹤狀態(tài)信息。

public class AndroidOpenStackClientConnector implements OpenStackClientConnector{for(Map.Entry

urlConnection.setRequestProperty("Content-Type",request.entity().getContentType());if(request.entity().getContentType().equals("application/json")){ObjectMapper mapper=OpenStackClientService.mapper(request.entity().getEntity().getClass());StringWriter writer=new StringWriter();mapper.writeValue(writer,request.entity().getEntity());urlConnection.getOutputStream().write(writer.toString().getBytes());}
近年來(lái)信息化的飛速發(fā)展催生了大數(shù)據(jù)時(shí)代的到來(lái),企業(yè)面臨著大量數(shù)據(jù)存儲(chǔ)所帶來(lái)的硬件設(shè)施缺乏、維護(hù)成本高等難題。面對(duì)龐大的云存儲(chǔ)市場(chǎng),電信運(yùn)營(yíng)商要想抓住機(jī)遇,把云存儲(chǔ)服務(wù)轉(zhuǎn)化成自己新的業(yè)務(wù)增長(zhǎng)點(diǎn),關(guān)鍵是要利用自身資源優(yōu)勢(shì)構(gòu)建一種可快速?gòu)椥詳U(kuò)展、靈活管理的開(kāi)放式云存儲(chǔ)服務(wù)平臺(tái)。本文通過(guò)研究Openstack+Swift的系統(tǒng)架構(gòu),提出了基于該架構(gòu)之上的偽文件系統(tǒng),并實(shí)現(xiàn)了偽文件系統(tǒng)中各項(xiàng)操作,為企業(yè)數(shù)據(jù)存儲(chǔ)提供新的途徑。