梁星(西安測(cè)繪總站,陜西西安 710054)
?
私有云框架下的GIS柵格數(shù)據(jù)存儲(chǔ)與顯示研究*
梁星
(西安測(cè)繪總站,陜西西安710054)
摘要:探討了企業(yè)內(nèi)部的私有云框架設(shè)計(jì)和局域網(wǎng)環(huán)境下分布式文件系統(tǒng)的建立,并分析了在分布式文件系統(tǒng)中如何對(duì)GIS柵格數(shù)據(jù)進(jìn)行影像金字塔存儲(chǔ),然后提出了利用基于G/S模式的Map/Reduce技術(shù)實(shí)現(xiàn)數(shù)據(jù)下載的負(fù)載均衡策略。實(shí)現(xiàn)了局域網(wǎng)環(huán)境下GIS柵格數(shù)據(jù)的高性能訪問,研究成果具有一定的實(shí)踐意義。
關(guān)鍵詞:私有云; GIS柵格數(shù)據(jù);分布式文件系統(tǒng);影像金字塔
GIS柵格數(shù)據(jù)是海量數(shù)據(jù),需要大量的存儲(chǔ)空間。對(duì)于企業(yè)級(jí)柵格數(shù)據(jù)而言,共享主要采用文件映射、網(wǎng)絡(luò)數(shù)據(jù)庫和WebGIS等方式,但這些方法存在缺乏統(tǒng)一調(diào)度、網(wǎng)絡(luò)傳輸受阻、服務(wù)器負(fù)荷大等問題。云構(gòu)建方式無疑是目前海量柵格數(shù)據(jù)共享的最好方法。柵格數(shù)據(jù)存儲(chǔ)在云端即分布式文件系統(tǒng)中,通過服務(wù)器統(tǒng)一調(diào)度,對(duì)大量客戶端提供高性能訪問服務(wù)。目前云計(jì)算研究主要在公有云方面,對(duì)私有云研究比較少。因此,本文提出私有云的企業(yè)級(jí)柵格數(shù)據(jù)共享思路。通過構(gòu)建私有云框架、設(shè)計(jì)分布式文件系統(tǒng)以及柵格數(shù)據(jù)的金字塔存儲(chǔ),最終實(shí)現(xiàn)了局域網(wǎng)環(huán)境下的柵格數(shù)據(jù)的高性能訪問。
國(guó)外的云GIS研究起步較早。不管是在產(chǎn)品的架構(gòu)還是產(chǎn)品的最終運(yùn)營(yíng)模式,國(guó)外都有一些公司進(jìn)行了較好的實(shí)踐,能夠在云計(jì)算的平臺(tái)上提供具有空間屬性的數(shù)據(jù)和服務(wù)。ESRI公司是地理信息行業(yè)一家實(shí)力強(qiáng)大的公司,多年來一直致力于研究云GIS平臺(tái)。旗下產(chǎn)品ArcGIS Online能夠?qū)IS平臺(tái)部署在亞馬遜彈性云中,并提供云GIS服務(wù)。
國(guó)內(nèi)的GIS行業(yè)如雨后春筍般發(fā)展,云GIS當(dāng)然也發(fā)展迅速。比較成熟的案例是國(guó)內(nèi)的SuperMap SGS平臺(tái)。它是一個(gè)在開源的基礎(chǔ)上開發(fā)的云計(jì)算架構(gòu),能夠完成對(duì)基礎(chǔ)地理信息要素的全面集成,對(duì)OGC標(biāo)準(zhǔn)的WFS、WMS、WCS等進(jìn)行較好的支持[1]。
相對(duì)于公有云擁有成千上萬個(gè)客戶,系統(tǒng)龐大,私有云的客戶則唯一。私有云致力為某一目標(biāo)客戶構(gòu)建,因此其能夠最大程度地促進(jìn)安全性的控制、數(shù)據(jù)的管理、服務(wù)質(zhì)量的提升。一個(gè)企業(yè)由于擁有基礎(chǔ)設(shè)施,因此它可以根據(jù)需要來確定如何在基礎(chǔ)設(shè)施上部署應(yīng)用程序。企業(yè)的數(shù)據(jù)管理中心的防火墻內(nèi)可以部署私有云,安全的主機(jī)托管場(chǎng)所也可以部署私有云。本文設(shè)計(jì)的私有云框架示意圖,見圖1。
私有云框架由局域網(wǎng)云和若干客戶端組成。局域網(wǎng)云運(yùn)行于企業(yè)內(nèi)部的局域網(wǎng)中,由一個(gè)總服務(wù)器和若干存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)節(jié)點(diǎn)組成??蛻舳送ㄟ^連接總服務(wù)器獲取分布式文件系統(tǒng)中的柵格文件信息和存儲(chǔ)的數(shù)據(jù)節(jié)點(diǎn)列表;總服務(wù)器負(fù)責(zé)處理來自客戶端的請(qǐng)求,當(dāng)客戶端要求下載柵格數(shù)據(jù)時(shí),查詢分布式文件系統(tǒng)是否有合法柵格數(shù)據(jù)和儲(chǔ)存的數(shù)據(jù)節(jié)點(diǎn)列表,并向分布式數(shù)據(jù)服務(wù)器集群查詢數(shù)據(jù)節(jié)點(diǎn)的可用性,最后將可用的數(shù)據(jù)節(jié)點(diǎn)的列表發(fā)送到客戶端??蛻舳双@得服務(wù)器發(fā)送過來數(shù)據(jù)節(jié)點(diǎn)的ID、IP地址、端口號(hào)、CPU狀態(tài)、可用內(nèi)存、剩余空間等信息,將柵格下載任務(wù)分成若干并行的小數(shù)據(jù)塊并啟動(dòng)任務(wù)調(diào)度策略,向數(shù)據(jù)服務(wù)器集群請(qǐng)求并下載數(shù)據(jù)。客戶端與分布式服務(wù)器集群的數(shù)據(jù)傳輸使用的是客戶端聚合服務(wù)思想,能高效完成下載任務(wù)。
在私有云框架中,基礎(chǔ)的數(shù)據(jù)傳輸部分采用“完成端口”模型架構(gòu)?!巴瓿啥丝凇蹦P碗m然是迄今為止最復(fù)雜的一種I/O模型,但是如果一個(gè)應(yīng)用程序同時(shí)需要管理為數(shù)眾多的套接字,那么采用這種模型,會(huì)使系統(tǒng)達(dá)到最佳性能。在創(chuàng)建完成端口時(shí),可以指定在CPU能夠承受的的線程數(shù)在該完成端口上運(yùn)行。當(dāng)某個(gè)線程調(diào)用Sleep或者WaitForSingleObject函數(shù)時(shí),會(huì)進(jìn)入暫停狀態(tài),因此為了使系統(tǒng)達(dá)到最佳性能,在程序設(shè)計(jì)中往往會(huì)創(chuàng)建比之前指定的線程數(shù)要多的線程,一旦某個(gè)線程進(jìn)入暫停狀態(tài),就會(huì)啟用剩下的線程來取代它的位置。
圖1 私有云框架Fig.1 Private cloud framework
3.1分布式文件系統(tǒng)的建立
文件系統(tǒng)結(jié)構(gòu)和文件數(shù)據(jù)組成了分布式文件系統(tǒng)。文件系統(tǒng)結(jié)構(gòu)以記錄為單元存儲(chǔ)于總服務(wù)器中,主要包括系統(tǒng)目錄數(shù)據(jù)、文件列表數(shù)據(jù)。它們的記錄結(jié)構(gòu),如表1、2、3所示。
表1 系統(tǒng)目錄記錄格式Tab.1 System directory record format
表2 系統(tǒng)文件記錄格式Tab.2 System files' record format
表3 數(shù)據(jù)節(jié)點(diǎn)的記錄結(jié)構(gòu)Tab.3 Data nodes' recording structure
文件數(shù)據(jù)分布式存儲(chǔ)于數(shù)據(jù)節(jié)點(diǎn),在數(shù)據(jù)節(jié)點(diǎn)中,對(duì)每一個(gè)文件進(jìn)行分塊,每個(gè)小文件分別存儲(chǔ)到不同的數(shù)據(jù)節(jié)點(diǎn)上。分塊之后的文件儲(chǔ)存,如圖2所示。
圖2 數(shù)據(jù)節(jié)點(diǎn)的文件存儲(chǔ)圖Fig.2 File storage figure of data nodes
3.2影像的金字塔存儲(chǔ)
在客戶端用戶需要瀏覽不同精度的柵格數(shù)據(jù)。當(dāng)?shù)貓D放大時(shí),顯示空間精度提高,顯示范圍減小;當(dāng)?shù)貓D縮小時(shí),顯示空間精度降低,顯示范圍變大。為提高數(shù)據(jù)查詢速度和傳輸效率,分布式服務(wù)器中的柵格數(shù)據(jù)需建立影像金字塔。
傳統(tǒng)算法的影像金字塔的構(gòu)建過程一般是先將原始影像進(jìn)行重采樣生成較低分辨率的影像并保存為一個(gè)新的影像文件,然后對(duì)該影像文件再進(jìn)行重采樣生成更低分辨率的影像,依次進(jìn)行,直到完成預(yù)定的分層。最后再對(duì)每層的影像進(jìn)行切割并保存成切片文件。需要說明的是,由于影像的數(shù)據(jù)量非常大,所以在生成新的一層影像數(shù)據(jù)時(shí),一般需要多次加載前一層的影像數(shù)據(jù)才能完成。
按照?qǐng)D2所示的流程建立影像金字塔,能夠有效減少輸入輸出的次數(shù),大多數(shù)運(yùn)算是在內(nèi)存中進(jìn)行的。
圖3 影像金字塔算法處理流程Fig.3 Algorithm processing flow of image pyramid
算法具體流程為:首先加載原始數(shù)據(jù),然后按照設(shè)定的分辨率進(jìn)行重采樣計(jì)算,生成新的柵格數(shù)據(jù)。如果不想再生成其他分辨率的柵格數(shù)據(jù),則退出程序,否則繼續(xù)進(jìn)行重采樣計(jì)算。該算法依托內(nèi)存中存儲(chǔ)的數(shù)據(jù)進(jìn)行多次采樣計(jì)算,能夠盡可能的減少執(zhí)行輸入輸出步驟,節(jié)省執(zhí)行時(shí)間。只有“加載原始影像數(shù)據(jù)”和“保存切片文件”需要執(zhí)行輸入輸出步驟,其它處理都是在內(nèi)存中一起完成的。經(jīng)測(cè)試,在完成相同的影像金字塔切割任務(wù)時(shí),本文算法比傳統(tǒng)算法至少可以節(jié)省20%的時(shí)間。
4.1柵格數(shù)據(jù)云下載
柵格數(shù)據(jù)云下載采用G/S模式下的Map/Reduce技術(shù)。Map/Reduce的整個(gè)過程是由映射(Map)以及重組(Reduce)兩個(gè)步驟所組成,運(yùn)行時(shí)系統(tǒng)會(huì)將資料進(jìn)行切割,并分配給不同的運(yùn)算主機(jī)進(jìn)行處理。
G/S模式,是一種在互聯(lián)網(wǎng)中呈網(wǎng)狀的空間信息的服務(wù)模式,即地學(xué)瀏覽器/分布式的空間數(shù)據(jù)服務(wù)器集群模式。它按照“請(qǐng)求”—“聚合”—“服務(wù)”的“客戶端聚合服務(wù)”的工作機(jī)制,使用HGML對(duì)網(wǎng)絡(luò)上的數(shù)據(jù)類型多樣、數(shù)據(jù)量巨大的數(shù)據(jù)依次進(jìn)行存儲(chǔ)—組織—交換—調(diào)度—展示等步驟,最終在客戶端實(shí)現(xiàn)數(shù)據(jù)和功能的合成,生成并提供所需的空間地理信息服務(wù)[2]。
由于IT行業(yè)的發(fā)展,PC機(jī)的運(yùn)行性能有了成倍的增長(zhǎng)。現(xiàn)在在客戶端可以完成以前在服務(wù)器端完成的工作?;凇翱蛻舳司酆戏?wù)”工作機(jī)制,能夠在不同的數(shù)據(jù)節(jié)點(diǎn)上只下載整體數(shù)據(jù)的一部分,在客戶端完成整個(gè)數(shù)據(jù)的合成。在客戶端獲取到服務(wù)器發(fā)送過來的數(shù)據(jù)節(jié)點(diǎn)列表后,不再與服務(wù)器進(jìn)行交互,因此能在很大程度上降低服務(wù)器的壓力,提高整個(gè)私有云的運(yùn)作效率。服務(wù)器根據(jù)客戶區(qū)的大小和地圖顯示的分辨率這兩個(gè)參數(shù),查詢當(dāng)前分辨率下的合法數(shù)據(jù)。
4.2柵格數(shù)據(jù)顯示
根據(jù)客戶端瀏覽器的地圖顯示范圍和顯示分辨率,獲取的始終為屏幕顯示范圍內(nèi)的影像金字塔某級(jí)的柵格數(shù)據(jù)。在客戶端使用MFC中的StretchDIBits函數(shù)實(shí)現(xiàn)該柵格數(shù)據(jù)顯示。StretchDIBits函數(shù)原型為:
int StretchDIBits(HDC hdc,int XDest,int YDest,int nDest-Width,int nDestHeight,int XSrc,int Ysrc,int nSrcWidth,int nSrcHeight,CONST VOID * lpBits,CONST BITMAPINFO * lpBitsInfo,UINT iUsage,DWORD dwRop)[3];
根據(jù)StretchDIBits函數(shù),事先計(jì)算顯示柵格數(shù)據(jù)在屏幕分辨率下所需的位圖大小。根據(jù)位圖大小,創(chuàng)建對(duì)應(yīng)的BITMAPINFO數(shù)據(jù)結(jié)構(gòu)和lpBits字節(jié)數(shù)組。最后,將客戶端下載的顯示柵格數(shù)據(jù)逐行投影至字節(jié)數(shù)組中,實(shí)現(xiàn)柵格數(shù)據(jù)的顯示。
本次柵格數(shù)據(jù)下載的測(cè)試是依據(jù)客戶端的顯示區(qū)域大小和具體分辨率進(jìn)行的。在3臺(tái)CPU為酷睿雙核T6400,內(nèi)存為2G 的PC機(jī)上,設(shè)置6個(gè)數(shù)據(jù)節(jié)點(diǎn)。依次增加數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù),最大的數(shù)據(jù)節(jié)點(diǎn)數(shù)目為6。在客戶端配置網(wǎng)卡為瑞昱RTL8186(P)/8111C(P)PCI-E Gigabit Ethernet NIC,最大下載速度為10 MB/s。由于實(shí)驗(yàn)條件的限制,測(cè)試結(jié)果受測(cè)試人員當(dāng)時(shí)的狀態(tài),局域網(wǎng)的網(wǎng)絡(luò)流量,測(cè)試機(jī)器的運(yùn)行狀態(tài)等諸多因素的影響。以下載大小為150 MB的GIS柵格數(shù)據(jù)為例,其下載速度與數(shù)據(jù)節(jié)點(diǎn)的數(shù)量關(guān)系,如表4所示。
表4 私有云柵格數(shù)據(jù)下載測(cè)試Tab.4 Raster data download test of private clouds
從表4可以看出:數(shù)據(jù)的下載速度隨數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù)增多而增加。當(dāng)數(shù)據(jù)節(jié)點(diǎn)的數(shù)目由一個(gè)節(jié)點(diǎn)變?yōu)閮蓚€(gè)節(jié)點(diǎn)時(shí),下載速度有了明顯的提高,較好的體現(xiàn)了云下載的效果。但基于客戶端網(wǎng)卡流量的限制,數(shù)據(jù)的下載速度會(huì)不斷接近上限,即趨近10 MB/s的下載速度。
本文在“云計(jì)算”的熱門研究背景下,以GIS柵格數(shù)據(jù)在私有云框架下的存儲(chǔ)與顯示為中心,系統(tǒng)闡述了企業(yè)級(jí)云框架的設(shè)計(jì)、分布式文件系統(tǒng)的建立、影像金字塔的構(gòu)建以及基于G/S模式的Map/Reduce柵格數(shù)據(jù)下載模式。最后,以一幅GIS柵格數(shù)據(jù)為例,測(cè)試數(shù)據(jù)節(jié)點(diǎn)下載效率。測(cè)試表明,當(dāng)數(shù)據(jù)節(jié)點(diǎn)增多時(shí),柵格數(shù)據(jù)下載速度不斷提高,直至客戶端網(wǎng)卡的流量上限。因此,本文提出的私有云框架下的柵格數(shù)據(jù)云下載能夠在企業(yè)內(nèi)部環(huán)境下高效共享和顯示GIS柵格數(shù)據(jù),具有一定的理論價(jià)值和實(shí)踐意義。
[參考文獻(xiàn)]
[1]賈萍,劉聚海,王遠(yuǎn).基于云計(jì)算及物聯(lián)網(wǎng)的GIS綜述[J].國(guó)土資源信息化,2012(6):12-13.
[2]薛靜.基于虛擬化的云計(jì)算平臺(tái)中安全機(jī)制的研究[D].西安:西北大學(xué),2010.
[3]趙薇,耿晴.云計(jì)算在GIS系統(tǒng)模型中的應(yīng)用[J].地理空間信息,2011(6):8-9.
Study on GIS Raster Data's Storage and Display Under Private Clouds Framework
LIANG Xing
(Xi'an Surverying Station,Xi'an Shanxi 710054,China)
Abstract:This paper discusses the design of the private clouds framework and the establishment of distributed file system on local area network for the company,proposes the way to store GIS raster data on the distributed file system using Image Pyramid Model,and studies the method of how to achieve load balancing when downloading data based on Map/Reduce technology under G/S model.We have achieved the high performance access of GIS raster data on local area network,and the research results have some certain practical significance.
Key words:private clouds; GIS raster data; distributed file system; image pyramid
作者簡(jiǎn)介:梁星(1989~),男,湖北當(dāng)陽人,助理工程師,現(xiàn)主要從事地圖制圖與GIS開發(fā)方面的工作。
*收稿日期:2015-01-25
文章編號(hào):1007-9394(2015)02-0001-03
文獻(xiàn)標(biāo)識(shí)碼:A
中圖分類號(hào):P 208; P 209