張 弛,龔茂珣
(國家海洋局東海預報中心 上海市 200081)
隨著海洋觀(監(jiān))測數據工作的不斷發(fā)展,海洋數據具有分布面廣、要素種類多、傳輸頻率高等特點,如實時海洋數據以分鐘、小時級別傳輸;文件傳輸類別異構化,如同時接收海洋遙感數據、海洋觀測數據、海洋調查數據等;數據傳輸文件海量化,相當數量級的海洋觀測點幾乎同時向海區(qū)中心發(fā)送資料。
然而現有海洋數據存儲體系是將單獨服務器作為數據存儲設備,由于該服務器負責接收海洋數據的同時需將數據進行解析并分發(fā)至各個不同目標地址的存儲服務器,隨著海洋數據以分鐘級、小時級等多個時間傳輸頻率源源不斷地傳輸至該服務器,由于該服務器頻繁的計算及分配剩余存儲空間,導致I/O調度過于頻繁,最終可能導致數據文件積壓、數據處理延時等問題,嚴重影響了海洋數據存儲體系的工作效率。針對此類問題,本文圍繞研究海洋數據的結構特點以及提高現有傳輸硬件設備存儲效率2方面進行開展[1]。
當部分服務器進行接收數據并分配存儲空間等高負載作業(yè)的同時,傳輸網內仍存在負載較輕的服務器,比如發(fā)布webservice、運行單一監(jiān)控程序、郵件服務器等,以上現象說明數據傳輸網內服務器集群存在負載極不均衡的情況。該情況極有可能因負載較重的服務器死機從而降低整個海洋數據存儲系統(tǒng)工作效率。如何對海量的多源異構海洋數據在合理利用現有硬件資源的基礎上進行統(tǒng)一存儲,以提高存儲系統(tǒng)的負載均衡性和存儲的安全性將成為海洋數據存儲業(yè)務發(fā)展的方向。
一般情況下,放置存儲設備的空間有限,也不具備無限擴充存儲設備的可能。鑒于傳輸體系內擁有接近主流配置的服務器集群和較高的傳輸帶寬,本文將構建基于云存儲的架構,并根據海洋數據的實際數據結構特點采用了以下4層架構的設計[2],如圖1所示:
圖1 云存儲子系統(tǒng)架構圖
物理層:由于傳輸體系采用光纖、衛(wèi)星、CDMA等通訊方式進行傳輸,所以內部的數據分發(fā)效率較高。作為硬件虛擬化的基礎,該層的作用是將傳輸網內的所有可用服務器集群虛擬化成為一個整體的存儲設備,管理員通過統(tǒng)一管理平臺該網內的所有存儲設備進行實時監(jiān)控,云存儲系統(tǒng)動態(tài)地將數據存儲至負載較輕的存儲服務器上,同時可進行存儲空間分配、狀態(tài)監(jiān)控和維護升級等服務。該層為存儲設備(如磁盤陣列)的擴展提供了兼容接口。
基礎層:提供類似操作系統(tǒng)的可視化管理及配置服務。該層利用負載均衡存儲算法及邏輯卷管理等技術實現了多個存儲設備之間的協(xié)同工作,將海洋數據文件存儲至物理層中,并且可以通過配置各海洋數據的字段對應要素,實現對多源異構數據的解析、分發(fā)及備份的自動化操作。該層的優(yōu)勢在于可集成分布式存儲設備并提高數據訪問效率[3]。
管理層:該層向訪問層以統(tǒng)一數據接口的形式提供數據服務。由于海洋數據傳輸的不間斷性,面對日益龐大的海洋數據庫,建立該層的目的是便于今后的數據管理。該層將對外提供分權限訪問數據的服務,無論硬件存儲層中的服務器集群體積多么龐大,在該層只作為一個統(tǒng)一的數據接口展示,該設計相對多而繁雜的分散式數據庫具有更加便于管理海洋數據的優(yōu)勢。
應用層:該層是當業(yè)務使用者調用海洋數據做數據挖掘或展示使用時,向應用接口層提供相應的數據接口,用戶可根據被分配的訪問及調用數據的權限獲取所需數據,該層對數據做只讀操作,目的是保護數據的不被意外修改或刪除。
云存儲系統(tǒng)通過傳輸網內的各服務器的IP地址實現內部實例間的數據交互與傳輸,與廣域網中多用戶通過實例協(xié)同工作相比具有更高效率的調用和處理通信資源的優(yōu)勢。為了將海洋數據利用云存儲技術實現負載均衡分配存儲空間,以及實時解析數據流中各要素并分發(fā)至各目標數據庫的目的,本文設計了一個完整的云存儲子系統(tǒng)的工作流程。
該子系統(tǒng)由4個主要部分構成:1)數據流映射接口;2) 虛擬化存儲池;3) 數據分析模塊;4)數據解析模塊。由于存儲過程依托運行中的虛擬機服務器進行空間分配存儲,所以需將虛擬機管理員的全部權限賦予本存儲系統(tǒng)。
各個部分的工作機制以及通信機制如圖2所示。
2.2.1 數據映射接口
該接口是圍繞如何解決海洋數據流進行數據映射,并在映射存儲到對應的目標數據庫。該接口的設計思想是利用C語言編寫一套軟件接口,目的是規(guī)避各海洋數據采集器由于硬件接口不統(tǒng)一而無法實時傳輸到云存儲中的缺陷。
2.2.2 虛擬化存儲池
當前端儀器采集到海洋數據后,通過數據映射接口將數據傳輸至云存儲中,云存儲首先將接收的數據存儲在計算機緩存中,然后根據當前云存儲系統(tǒng)內的各服務器的存儲狀態(tài)和當前的計算負載狀態(tài)等評價指標綜合計算后分配存儲空間,以實現彈性存儲的目的,并在存儲層中對實時數據進行存儲。
圖2 私有云存儲子系統(tǒng)流程圖
2.2.3 數據分析模塊
由于海洋數據部分是結構化內容的報文文件,在對海洋數據進行存儲后,業(yè)務使用者可將海洋數據的實際內容按照《海洋水文規(guī)范》中各要素對應的意義利用結構化數據模型技術進行建模。建模的目的是為下一步的海洋數據內容解析做準備,當啟動該模塊時,系統(tǒng)將對數據內容自頂向下地進行分析,并將最終結果通過統(tǒng)一的結構化數據格式傳遞給解析模塊。
2.2.4 數據解析模塊
該層主要對海洋數據進行解析操作,系統(tǒng)將已存儲的各數據要素模型與將解析后的數據內容進行比較分析,并將對應格式的數據要素模型回饋至虛擬化硬件端,該端將根據具體實際要素模板提取對應的數據屬性值,如果未匹配相應模板,系統(tǒng)則默認回溯到元數據分析模塊繼續(xù)查找。解析后的要素最終將通過數據映射接口同步至各目標數據庫,實現海洋數據的同步解析入庫。
通過對國內外云存儲系統(tǒng)及海洋數據存儲機制的研究,本文提出了對海洋數據利用云存儲技術進行存儲的思想,并設計了以下實驗,實驗結論驗證了本文針對海洋數據提出的云存儲負載均衡存儲機制的可行性。
部署云存儲的數據服務器參數如表1所示。
表1 云部署單臺計算機參數
通過云存儲子系統(tǒng)部署的每一臺服務器均平均配置成3臺虛擬機,以模擬海量海洋數據集中存儲的需求。部署架構如圖3所示。
海洋數據采集端通過數據映射接口向云存儲系統(tǒng)發(fā)起1個寫入數據的請求,映射接口會將反饋采集端與那個存儲節(jié)點建立傳輸協(xié)議,并進行數據寫入。文件是以chunks的方式寫入存儲,每個block由被生成時系統(tǒng)賦予唯一的chunk-h(huán)andle進行標識,為了提高云存儲的數據容災性,每一個block將會被復制到多個存儲節(jié)點上。
本文以1個控制節(jié)點(ControlNode),5個存儲節(jié)點(StoreNode),并假設64個海洋數據采集端同時發(fā)送1條大小為1 MB的海洋數據文件為例:
圖3 云存儲部署架構圖
本文設計的云存儲的工作機制旨在減少控制節(jié)點的參與計算,不會將單個文件拆分成多個部分同時寫入不同存儲節(jié)點。對于小于等于1 MB的文件以原文件尺寸存儲成chunk,當文件大小大于1 MB時,客戶端會控制以大文件的方式分配存儲空間。但考慮到海洋數據文件一般單個大小不會超過1 MB,所以該存儲方式對海洋數據存儲尤其適用。
當前海洋觀測預報系統(tǒng)中海洋數據的存儲機制已無法實現動態(tài)均衡存儲的現狀正制約著海洋數據存儲領域的發(fā)展,本文基于對海洋數據特點、存儲結構進行研究和調研,設計了全新的基于云存儲的海洋數據存儲體系架構,可在節(jié)約空間和財力的基礎上動態(tài)地將海洋數據存儲、解析并分發(fā)至各目標數據庫,該系統(tǒng)在資源利用率、響應時間及可擴展性方面都將優(yōu)于先前的系統(tǒng)。
實驗結果表明,該系統(tǒng)可以基本滿足對海洋數據流存儲體系的優(yōu)化,本研究的貢獻意義在于利用現有服務器資源進行虛擬化部署以實現云存儲體系,極大程度地提高數據存儲能力以及數據處理效率,并為今后的海洋數據的存儲系統(tǒng)的設計提供理論和實際的借鑒價值。
[1]王佳雋.基于云計算環(huán)境的虛擬化資源管理研究[D].復旦大學,2011.
[2]李思揚.云計算平臺中虛擬化運行環(huán)境的研究與實現 [D].北京郵電大學,2012.
[3]施巖.云計算研究及Hadoop應用程序的開發(fā)與測試[D].北京郵電大學,2011.