嚴志
(長沙民政職業技術學院軟件學院,湖南長沙410004)
當前應用變得越來越復雜,需要支持更多的用戶、更強的計算能力、更加穩定安全,為了支撐這些不斷增長的需求,企業需要花費巨大的成本。云計算能夠給用戶提供可靠、自定義、最大化資源利用的服務,是一種嶄新的分布式計算模式[1]。云計算將傳統的IT工作站轉變為以網絡為依托的云平臺運行,極大地整合了計算資源,使按需分配成為可能[2]。
在學術界和工業界共同推動之下,云計算及其應用呈現迅速增長的趨勢,各大云計算廠商如Amazon,IBM,Google,Microsoft,Sun,阿里巴巴等公司都推出自己研發的云計算服務平臺。在學術界,主要的開源云計算平臺有OpenStack,Eucalyptus、CloudStack 和 OpenNebula[3]等。基于云平臺的應用越來越多,郭雷風等[4]提出運用云計算技術建立農村綜合信息共享平臺;張健博 [5]提出在OpenStack云平臺基礎上建立云監控系統,能夠無縫對接OpenStack云主機的監控與管理,使資料利用更加合理;楊善林等[6]從管理的視角對基于云計算的多源信息服務系統作了綜述,探討了云計算環境下多源信息服務系統的體系結構及關鍵技術;陳琳等 [7]提出了基于微軟的Windows Azure云計算平臺的自動氣象監測網絡系統,實現氣象信息的共享。
全國云計算職業技能大賽依托南京55所提供的基于OpenStack的云平臺,該平臺主要提供了一個類似百度云盤系統,系統搭建在Swift虛擬系統里。Swift是OpenStack開源云計算項目的子項目,提供彈性可伸縮、高可用的分布式對象存儲服務,適合存儲大規模非結構化數據,網絡云盤所有文件都保存在Swift系統。
1.Swift云計算平臺架構
Swift采用層次數據模型,共設三層邏輯結構:Account/Container/Object(賬戶/容器/對象)。這里的Account和個人賬戶不是一個概念,可理解為租戶,租戶是Swift系統分配給用戶的一個賬戶,每個租戶會分配一個容器Container,容器類似文件夾,租戶的所有文件都會放在該容器下。Object代表封裝一組對象,對象由元數據和數據兩部分組成,一般指容器下的各種文件對象。Swift采用完全對稱、面向資源的分布式系統架構設計,所有組件都可擴展,避免因單點失效而擴散并影響整個系統運轉,通信方式采用非阻塞式I/O模式,提高了系統吞吐和響應能力,其數據模型如下圖1示:

圖1 Swift文件系統
南京55所網絡云盤系統是在Oracle VirtualBox下裝載Swift系統實現的虛擬云,該系統只提供了框架,文件操作功能需自行開發,用戶通過安卓端和PC Web端口訪問服務器,兩者待完成的功能相似,主要是對Swift租戶上的文件進行創建、移動、刪除、上傳、下載、復制/粘貼、預覽、分享等操作,大數據模塊是針對網絡數據進行爬取、清洗、整理,并展示大數據詞云分析圖表。系統架構如圖2所示。

圖2 云盤系統架構
2.Android端核心技術
移動網絡云盤客戶端采用的主要技術是網絡異步加載數據到自定義數據適配器,將適配器的數據綁定到ListView控件,數據適配器的數據對象是SFileData對象,該對象包含文件圖像、大小、類型、路徑、名稱等參數構成。其流程如下圖3所示。

圖3 網絡云盤文件系統加載流程
2.1 OpenStack網絡訪問
OpenStack網絡訪問參數是一個5元組,即<USERNAME,PASSWORD,SWIFT_IP,TENANTID,TENANTNAME>,USERNAME和 PASSWORD對應 keystone用戶名、keystone密碼,該用戶、密碼可以通過命令在Swift服務器上建立,android端登錄時需要用到;SWIFT_IP是Swift服務器的IP地址,該服務器獨立部署在主機;TENANTID是Swift訪問序列號,是55所公司自定義的系統產品加密序列;TENANTNAME是keystone租戶名,租戶是指在Swift服務器上開辟一個空間,用于存儲網絡用戶的文件,方便不同的用戶管理自己的文件,一般與keystone用戶名相同。
2.2 自定義數據適配器及數據加載
通過Openstack網絡訪問指定目錄下的文件列表,并以集合的形式綁定到自定義的數據適配器里,ListView控件加載數據適配器,形成如下圖4所示的文件系統。
ListView的數據使用異步任務AsyncTask完成數據加載,其關鍵算法步驟如下:
(1)通過OpenstackService獲得當前服務
(2)根據服務獲得當前租戶所有的操作文件集
(3)將獲得文件集采取異步任務方式提交到異步執行方法中
(4)獲得當前的Swift目錄,過濾當前租戶的操作文件集,設置文件系統
(5)將文件集綁定到數據適配器并顯示到ListView控件

圖4 文件系統加載
2.3 手機端功能模塊實現
以排序功能為例,通過Android手機操作在Swift服務器上文件,以文件大小、文件創建時間、文件名的升降序方式排序,并將排序結果綁定到ListView。其關鍵的思想是在異步任務里調用創建文件夾的API,并且更新ListView的數據,其他模塊和此類似。

圖5 文件排序
3.Javaweb端核心技術
3.1 Web端環境搭建
Swift服務器配置是非常重要的一環,配置不成功,后面的功能開發無法進行,配置流程圖如下所示:

圖6 javaweb開發配置
其中,開發主機配置相當關鍵,Swift服務器和開發主機獨立,通過wifi網絡設置使得開發機器和服務器在同一個網段里,開發主機通過局域網訪問Swift服務器。
3.2 Web端技術路線
Web端采用 Javaweb技術,前端使用 Flat-UI、Jquery、Bootstrap框架等,當用戶點擊觸發javascript事件后,js采用Ajax數據提交方式向后臺遞交數據,使用SpringMVC技術,前后端交互,Spring與Swift服務器交互采用南京55所API。其架構如下圖所示:

圖7 javaweb技術框架
3.3 Web端模塊實現
Web主要功能在于前端javascript代碼編寫,后端使用SpringMVC框架接受數據,并向前端反饋數據。以創建文件夾功能為例,通過前端js事件調用createDir()函數,將數據使用ajax提交到后臺SpringMVC執行,然后將執行結果反饋到前端。Js關鍵代碼:

4.大數據端系統
大數據是最新加入的功能模塊,還處于比較初級狀態,數據采集51job招聘信息,挖掘招聘崗位需求及技能要求,并通過d3.js可視化框架展示崗位和技能的匹配圖。大數據分為數據爬取模塊、數據分析模塊、數據展示三個部分。
爬取模塊采用Webmagic框架,webmagic是一個開源的Java垂直爬蟲框架,功能覆蓋整個爬蟲的生命周期(鏈接提取、頁面下載、內容抽取、持久化),支持多線程抓取,分布式抓取。
爬蟲算法步驟:
(1)根據種子鏈接,抽取目標鏈接放入待爬取隊列;
(2)解析隊列中的鏈接內容,并抽取需要的信息;
(3)處理抽取結果,將處理信息保存到文件或數據庫等;
(4)將數據上傳到hadoop系統進行大數據計算。
數據集存入hadoop系統后,進行數據清洗,主要采用Map/Reduce進行數據清洗,將數據規范化處理,然后利用mahout相關的算法進行數據分析挖掘,最后將結果持久化到數據庫。
5.研究實效及結論
本文詳細解剖云計算環境下網絡云盤系統架構,論述了開源云計算Swift的系統框架,對于如何搭建自己的私有云系統及云應用開發,值得借鑒。從職業技能大賽角度來說,云平臺的底層架構不是高職學生需要掌握的要素,只需要知道如何使用現有的開源技術構建自己的云環境即可。環境搭建后,后續的開發工作還需要繼續跟進,需要運用到Android、JavaWeb及大數據方面的知識,并提供了詳細的實現細節,對于備戰職業技能競賽有著參考作用。
云計算、大數據、人工智能是下一場IT技術爭奪的焦點,目前國內高職院校都非常重視,但是如何將新技術應用于高職課堂還不清晰。通過研究南京55所云計算平臺,發現該平臺對于教學有很好的輔助作用,可以應用到Android課程、Javaweb課程以及大數據課程,讓學生接觸前沿技術并提供項目實踐,同時有利于職業技能大賽準備。
【參考文獻】
[1]李喬,鄭嘯.云計算研究現狀綜述[J].計算機科學,2011,38(4):32-37.
[2]楊青峰.云計算時代關鍵技術預測與戰略選擇[J].中國科學院院刊,2015,30(2):148-169.
[3]鄧紅,王東興.主流開源云平臺的商業選擇[J].電腦知識與技術,2012,8(32):7830-7832.
[4]郭雷風,王文生.農村綜合信息服務云平臺若干關鍵技術研究[J].天津農業科學,2015,21(4):46-50.
[5]張健博.基于OpenStack云平臺的監控關鍵技術研究[D].重慶大學,2016.
[6]楊善林,羅賀,丁帥.基于云計算的多源信息服務系統研究綜述[J].管 理 科 學 學 報,2012,15(5):83-95.
[7]陳琳,齊文新,齊宇.基于云計算的自動氣象監測網絡系統[J].計算機應用,2012,32(5):1415-1617.