嚴志
(長沙民政職業(yè)技術學院軟件學院,湖南長沙410004)
當前應用變得越來越復雜,需要支持更多的用戶、更強的計算能力、更加穩(wěn)定安全,為了支撐這些不斷增長的需求,企業(yè)需要花費巨大的成本。云計算能夠給用戶提供可靠、自定義、最大化資源利用的服務,是一種嶄新的分布式計算模式[1]。云計算將傳統(tǒng)的IT工作站轉變?yōu)橐跃W(wǎng)絡為依托的云平臺運行,極大地整合了計算資源,使按需分配成為可能[2]。
在學術界和工業(yè)界共同推動之下,云計算及其應用呈現(xiàn)迅速增長的趨勢,各大云計算廠商如Amazon,IBM,Google,Microsoft,Sun,阿里巴巴等公司都推出自己研發(fā)的云計算服務平臺。在學術界,主要的開源云計算平臺有OpenStack,Eucalyptus、CloudStack 和 OpenNebula[3]等。基于云平臺的應用越來越多,郭雷風等[4]提出運用云計算技術建立農(nóng)村綜合信息共享平臺;張健博 [5]提出在OpenStack云平臺基礎上建立云監(jiān)控系統(tǒng),能夠無縫對接OpenStack云主機的監(jiān)控與管理,使資料利用更加合理;楊善林等[6]從管理的視角對基于云計算的多源信息服務系統(tǒng)作了綜述,探討了云計算環(huán)境下多源信息服務系統(tǒng)的體系結構及關鍵技術;陳琳等 [7]提出了基于微軟的Windows Azure云計算平臺的自動氣象監(jiān)測網(wǎng)絡系統(tǒng),實現(xiàn)氣象信息的共享。
全國云計算職業(yè)技能大賽依托南京55所提供的基于OpenStack的云平臺,該平臺主要提供了一個類似百度云盤系統(tǒng),系統(tǒng)搭建在Swift虛擬系統(tǒng)里。Swift是OpenStack開源云計算項目的子項目,提供彈性可伸縮、高可用的分布式對象存儲服務,適合存儲大規(guī)模非結構化數(shù)據(jù),網(wǎng)絡云盤所有文件都保存在Swift系統(tǒng)。
1.Swift云計算平臺架構
Swift采用層次數(shù)據(jù)模型,共設三層邏輯結構:Account/Container/Object(賬戶/容器/對象)。這里的Account和個人賬戶不是一個概念,可理解為租戶,租戶是Swift系統(tǒng)分配給用戶的一個賬戶,每個租戶會分配一個容器Container,容器類似文件夾,租戶的所有文件都會放在該容器下。Object代表封裝一組對象,對象由元數(shù)據(jù)和數(shù)據(jù)兩部分組成,一般指容器下的各種文件對象。Swift采用完全對稱、面向資源的分布式系統(tǒng)架構設計,所有組件都可擴展,避免因單點失效而擴散并影響整個系統(tǒng)運轉,通信方式采用非阻塞式I/O模式,提高了系統(tǒng)吞吐和響應能力,其數(shù)據(jù)模型如下圖1示:
圖1 Swift文件系統(tǒng)
南京55所網(wǎng)絡云盤系統(tǒng)是在Oracle VirtualBox下裝載Swift系統(tǒng)實現(xiàn)的虛擬云,該系統(tǒng)只提供了框架,文件操作功能需自行開發(fā),用戶通過安卓端和PC Web端口訪問服務器,兩者待完成的功能相似,主要是對Swift租戶上的文件進行創(chuàng)建、移動、刪除、上傳、下載、復制/粘貼、預覽、分享等操作,大數(shù)據(jù)模塊是針對網(wǎng)絡數(shù)據(jù)進行爬取、清洗、整理,并展示大數(shù)據(jù)詞云分析圖表。系統(tǒng)架構如圖2所示。
圖2 云盤系統(tǒng)架構
2.Android端核心技術
移動網(wǎng)絡云盤客戶端采用的主要技術是網(wǎng)絡異步加載數(shù)據(jù)到自定義數(shù)據(jù)適配器,將適配器的數(shù)據(jù)綁定到ListView控件,數(shù)據(jù)適配器的數(shù)據(jù)對象是SFileData對象,該對象包含文件圖像、大小、類型、路徑、名稱等參數(shù)構成。其流程如下圖3所示。
圖3 網(wǎng)絡云盤文件系統(tǒng)加載流程
2.1 OpenStack網(wǎng)絡訪問
OpenStack網(wǎng)絡訪問參數(shù)是一個5元組,即<USERNAME,PASSWORD,SWIFT_IP,TENANTID,TENANTNAME>,USERNAME和 PASSWORD對應 keystone用戶名、keystone密碼,該用戶、密碼可以通過命令在Swift服務器上建立,android端登錄時需要用到;SWIFT_IP是Swift服務器的IP地址,該服務器獨立部署在主機;TENANTID是Swift訪問序列號,是55所公司自定義的系統(tǒng)產(chǎn)品加密序列;TENANTNAME是keystone租戶名,租戶是指在Swift服務器上開辟一個空間,用于存儲網(wǎng)絡用戶的文件,方便不同的用戶管理自己的文件,一般與keystone用戶名相同。
2.2 自定義數(shù)據(jù)適配器及數(shù)據(jù)加載
通過Openstack網(wǎng)絡訪問指定目錄下的文件列表,并以集合的形式綁定到自定義的數(shù)據(jù)適配器里,ListView控件加載數(shù)據(jù)適配器,形成如下圖4所示的文件系統(tǒng)。
ListView的數(shù)據(jù)使用異步任務AsyncTask完成數(shù)據(jù)加載,其關鍵算法步驟如下:
(1)通過OpenstackService獲得當前服務
(2)根據(jù)服務獲得當前租戶所有的操作文件集
(3)將獲得文件集采取異步任務方式提交到異步執(zhí)行方法中
(4)獲得當前的Swift目錄,過濾當前租戶的操作文件集,設置文件系統(tǒng)
(5)將文件集綁定到數(shù)據(jù)適配器并顯示到ListView控件
圖4 文件系統(tǒng)加載
2.3 手機端功能模塊實現(xiàn)
以排序功能為例,通過Android手機操作在Swift服務器上文件,以文件大小、文件創(chuàng)建時間、文件名的升降序方式排序,并將排序結果綁定到ListView。其關鍵的思想是在異步任務里調(diào)用創(chuàng)建文件夾的API,并且更新ListView的數(shù)據(jù),其他模塊和此類似。
圖5 文件排序
3.Javaweb端核心技術
3.1 Web端環(huán)境搭建
Swift服務器配置是非常重要的一環(huán),配置不成功,后面的功能開發(fā)無法進行,配置流程圖如下所示:
圖6 javaweb開發(fā)配置
其中,開發(fā)主機配置相當關鍵,Swift服務器和開發(fā)主機獨立,通過wifi網(wǎng)絡設置使得開發(fā)機器和服務器在同一個網(wǎng)段里,開發(fā)主機通過局域網(wǎng)訪問Swift服務器。
3.2 Web端技術路線
Web端采用 Javaweb技術,前端使用 Flat-UI、Jquery、Bootstrap框架等,當用戶點擊觸發(fā)javascript事件后,js采用Ajax數(shù)據(jù)提交方式向后臺遞交數(shù)據(jù),使用SpringMVC技術,前后端交互,Spring與Swift服務器交互采用南京55所API。其架構如下圖所示:
圖7 javaweb技術框架
3.3 Web端模塊實現(xiàn)
Web主要功能在于前端javascript代碼編寫,后端使用SpringMVC框架接受數(shù)據(jù),并向前端反饋數(shù)據(jù)。以創(chuàng)建文件夾功能為例,通過前端js事件調(diào)用createDir()函數(shù),將數(shù)據(jù)使用ajax提交到后臺SpringMVC執(zhí)行,然后將執(zhí)行結果反饋到前端。Js關鍵代碼:
4.大數(shù)據(jù)端系統(tǒng)
大數(shù)據(jù)是最新加入的功能模塊,還處于比較初級狀態(tài),數(shù)據(jù)采集51job招聘信息,挖掘招聘崗位需求及技能要求,并通過d3.js可視化框架展示崗位和技能的匹配圖。大數(shù)據(jù)分為數(shù)據(jù)爬取模塊、數(shù)據(jù)分析模塊、數(shù)據(jù)展示三個部分。
爬取模塊采用Webmagic框架,webmagic是一個開源的Java垂直爬蟲框架,功能覆蓋整個爬蟲的生命周期(鏈接提取、頁面下載、內(nèi)容抽取、持久化),支持多線程抓取,分布式抓取。
爬蟲算法步驟:
(1)根據(jù)種子鏈接,抽取目標鏈接放入待爬取隊列;
(2)解析隊列中的鏈接內(nèi)容,并抽取需要的信息;
(3)處理抽取結果,將處理信息保存到文件或數(shù)據(jù)庫等;
(4)將數(shù)據(jù)上傳到hadoop系統(tǒng)進行大數(shù)據(jù)計算。
數(shù)據(jù)集存入hadoop系統(tǒng)后,進行數(shù)據(jù)清洗,主要采用Map/Reduce進行數(shù)據(jù)清洗,將數(shù)據(jù)規(guī)范化處理,然后利用mahout相關的算法進行數(shù)據(jù)分析挖掘,最后將結果持久化到數(shù)據(jù)庫。
5.研究實效及結論
本文詳細解剖云計算環(huán)境下網(wǎng)絡云盤系統(tǒng)架構,論述了開源云計算Swift的系統(tǒng)框架,對于如何搭建自己的私有云系統(tǒng)及云應用開發(fā),值得借鑒。從職業(yè)技能大賽角度來說,云平臺的底層架構不是高職學生需要掌握的要素,只需要知道如何使用現(xiàn)有的開源技術構建自己的云環(huán)境即可。環(huán)境搭建后,后續(xù)的開發(fā)工作還需要繼續(xù)跟進,需要運用到Android、JavaWeb及大數(shù)據(jù)方面的知識,并提供了詳細的實現(xiàn)細節(jié),對于備戰(zhàn)職業(yè)技能競賽有著參考作用。
云計算、大數(shù)據(jù)、人工智能是下一場IT技術爭奪的焦點,目前國內(nèi)高職院校都非常重視,但是如何將新技術應用于高職課堂還不清晰。通過研究南京55所云計算平臺,發(fā)現(xiàn)該平臺對于教學有很好的輔助作用,可以應用到Android課程、Javaweb課程以及大數(shù)據(jù)課程,讓學生接觸前沿技術并提供項目實踐,同時有利于職業(yè)技能大賽準備。
【參考文獻】
[1]李喬,鄭嘯.云計算研究現(xiàn)狀綜述[J].計算機科學,2011,38(4):32-37.
[2]楊青峰.云計算時代關鍵技術預測與戰(zhàn)略選擇[J].中國科學院院刊,2015,30(2):148-169.
[3]鄧紅,王東興.主流開源云平臺的商業(yè)選擇[J].電腦知識與技術,2012,8(32):7830-7832.
[4]郭雷風,王文生.農(nóng)村綜合信息服務云平臺若干關鍵技術研究[J].天津農(nóng)業(yè)科學,2015,21(4):46-50.
[5]張健博.基于OpenStack云平臺的監(jiān)控關鍵技術研究[D].重慶大學,2016.
[6]楊善林,羅賀,丁帥.基于云計算的多源信息服務系統(tǒng)研究綜述[J].管 理 科 學 學 報,2012,15(5):83-95.
[7]陳琳,齊文新,齊宇.基于云計算的自動氣象監(jiān)測網(wǎng)絡系統(tǒng)[J].計算機應用,2012,32(5):1415-1617.