蘇煥煥,沈夏炯,趙亞萌,徐 鵬,黃祥志
(1.河南大學(xué) 計算機(jī)與信息工程學(xué)院,河南 開封 475004;2.中國科學(xué)院遙感與數(shù)字地球研究所,北京 100101)
基于OWGA緩存的海量遙感瓦片數(shù)據(jù)發(fā)布
蘇煥煥1,2,沈夏炯1,趙亞萌2,徐 鵬1,2,黃祥志2
(1.河南大學(xué) 計算機(jī)與信息工程學(xué)院,河南 開封 475004;2.中國科學(xué)院遙感與數(shù)字地球研究所,北京 100101)
通過模擬實現(xiàn)傳統(tǒng)的WMTS瓦片服務(wù)對客戶端發(fā)來下載瓦片數(shù)據(jù)的HTTP請求進(jìn)行響應(yīng),計算得到各處理階段所用的平均時間,分析測試結(jié)果可知,將請求的本地儲存瓦片讀取到內(nèi)存中所花費時間占總響應(yīng)時間的70%以上。為縮短服務(wù)器響應(yīng)時間,提出了基于OWGA緩存的發(fā)布方法,將客戶端最近頻繁請求的、高分辨率的瓦片數(shù)據(jù)常駐內(nèi)存,以減少文件I/O操作;并在緩存不足時移除OWGA值較低且低分辨率的瓦片數(shù)據(jù)。通過與常用的內(nèi)存緩存置換算法LRU、LFU對比可知,在隨機(jī)訪問模式下,該算法的時間效率優(yōu)于其他兩種算法。
五層十五級組織結(jié)構(gòu);數(shù)據(jù)發(fā)布;HTTP協(xié)議;OWGA算子;內(nèi)存緩存
遙感影像數(shù)據(jù)是一種具有超高容量、可靠性強(qiáng)、方便及時等特點的信息載體。近年來,隨著遙感衛(wèi)星的密集發(fā)射,每天都將產(chǎn)生數(shù)TB的遙感影像數(shù)據(jù),這些數(shù)據(jù)在國土資源、城市建設(shè)和災(zāi)害預(yù)測等領(lǐng)域得到了廣泛應(yīng)用[1-3]。海量遙感影像數(shù)據(jù)的產(chǎn)生不僅為數(shù)據(jù)的組織、存儲和管理帶來了嚴(yán)峻的挑戰(zhàn);而且對遙感影像數(shù)據(jù)的傳播和應(yīng)用提出了更高的要求。
目前,較成熟的地理空間數(shù)據(jù)發(fā)布服務(wù)器軟件包括GeoServer、ArcGIS Server等,可實現(xiàn)單張遙感影像和經(jīng)拼接、融合等操作生成的大數(shù)據(jù)量影像的快速發(fā)布服務(wù)。GeoServer實現(xiàn)了OGC制定的WMS、WCS和WFS等標(biāo)準(zhǔn),并自GeoServer 1.7.5版本起,內(nèi)置了GWC組件。GWC是OpenGEO 開發(fā)的一個開源瓦片地圖服務(wù)中間件,采用動態(tài)切圖策略,具有地圖現(xiàn)勢性好、訪問流暢等優(yōu)點[4]。GWC運用自帶的存儲器緩存客戶請求過程中產(chǎn)生的地圖瓦片,并按照一定策略對瓦片緩存進(jìn)行管理,從而提高地圖服務(wù)速度,實現(xiàn)更好的用戶體驗。ArcGIS Server也實現(xiàn)了WMS、WCS和WFS等標(biāo)準(zhǔn),并自ArcGIS Server 10.1版本起,支持WMTS服務(wù)標(biāo)準(zhǔn),并提供了融合緩存、多圖層緩存以及按需緩存等緩存方式。WMTS切片地圖Web服務(wù)是指按接口規(guī)范返回特定空間地理位置內(nèi)數(shù)據(jù)制作的地圖切片,允許用戶訪問切片地圖,并將切片地圖作為操作的最小單元[5]。
雖然上述成熟的服務(wù)器可利用WMTS服務(wù)對外提供遙感瓦片數(shù)據(jù)服務(wù),但傳統(tǒng)的WMTS服務(wù)每次收到客戶端請求都需將目標(biāo)瓦片從本地文件存儲讀取到內(nèi)存中,再反饋給客戶端;當(dāng)大量地圖應(yīng)用客戶端訪問同一區(qū)域瓦片時,成百上千次的重復(fù)文件I/O操作非常浪費服務(wù)器資源,且較耗時,影響用戶體驗。針對此問題,本文提出了基于OWGA緩存的海量遙感瓦片數(shù)據(jù)快速發(fā)布方法,為客戶端提供快速響應(yīng),達(dá)到更好的用戶體驗。
1.1 遙感瓦片數(shù)據(jù)的文件存儲結(jié)構(gòu)
利用專利CN102346923A“一種基于經(jīng)緯網(wǎng)格的數(shù)據(jù)分級組織方法”[6]提出的五層十五級遙感數(shù)據(jù)組織模型實現(xiàn)了海量遙感影像數(shù)據(jù)的瓦片化組織、存儲和管理。該模型是將180°×360°的地球表層空間按 50°、5°、0.5°、0.05°、0.005°為基準(zhǔn),建立十進(jìn)制空間分辨率標(biāo)準(zhǔn)化數(shù)據(jù)層級,每層內(nèi)再按5∶2.5∶1比例構(gòu)成3級標(biāo)準(zhǔn)瓦片,每張瓦片的像元大小為1 000×1 000,每張瓦片的數(shù)據(jù)量可控制在MB級。在文件存儲系統(tǒng)中,每一層級對應(yīng)相應(yīng)的分辨率,最低層級對應(yīng)最高分辨率。這樣就形成了層級由小到大,切片數(shù)據(jù)量由大到小的金字塔形結(jié)構(gòu)。五層十五級的文件存儲結(jié)構(gòu)在磁盤存儲結(jié)構(gòu)上的表現(xiàn)形式為:根目錄圖層名稱層級(level)行號(row)列號(col) level_row_col.png。遙感影像切片數(shù)據(jù)的文件存儲體系結(jié)構(gòu)如圖 1所示。
1.2 OWGA算子
OWGA算子是常用的信息集結(jié)算子;而多屬性決策一般是利用已有的決策信息,通過一定的方式對一 組(有限個)備選方法進(jìn)行排序并擇優(yōu)。基于該算子的多屬性決策方法是較為簡潔實用的一種。
定義:設(shè)OWGA: R+n→R+,若
式中,w=(w1,w2,…,wn)為與函數(shù)OWGA相關(guān)聯(lián)的加權(quán)向量,滿足為數(shù)據(jù)中第i大的元素;R+為正實數(shù)集。
圖1 遙感瓦片數(shù)據(jù)的文件存儲體系結(jié)構(gòu)圖
1.3 內(nèi)存緩存機(jī)制
緩存技術(shù)是減少磁盤與內(nèi)存性能差距,提高存儲系統(tǒng)整體性能的基礎(chǔ)技術(shù)之一,被廣泛應(yīng)用于各種文件服務(wù)器、存儲服務(wù)器、數(shù)據(jù)庫服務(wù)器和網(wǎng)頁服務(wù)器中。使用緩存技術(shù)能有效減少冗余數(shù)據(jù)傳輸,提高數(shù)據(jù)加載速度,降低服務(wù)器負(fù)荷。
內(nèi)存緩存置換算法主要包括基于訪問時間的置換策略(如LRU)、基于訪問頻率的置換策略(如LFU)以及二者結(jié)合的置換策略。研究二者結(jié)合的置換策略的相關(guān)文獻(xiàn)[7-11]雖然同時考慮了訪問對象的訪問時間和頻率,但很少有將這兩個屬性放在同一量級并按照不同權(quán)重進(jìn)行比較的研究。本文提出的基于OWGA緩存的海量遙感瓦片數(shù)據(jù)快速發(fā)布方法將瓦片的訪問時間和頻率降化為同一量級進(jìn)行比較,并為不同屬性分配相應(yīng)的權(quán)值,得到每個瓦片對象的OWGA值。
該方法同時兼顧了請求瓦片的訪問時間、訪問頻率和鍵值3個屬性,其中鍵值是瓦片的唯一標(biāo)識,由瓦片的層級、行號、列號組成。在內(nèi)存中,通過ConcurrentHashMap鏈表對內(nèi)存對象進(jìn)行索引管理,同時構(gòu)建一個TreeMap鏈表,其中Key為字符型,由瓦片對象的OWGA和鍵值組合構(gòu)成(如OWGA_level_ row_col),每次訪問需重新計算該目標(biāo)瓦片的OWGA值,所以鏈表對象的Key是變化的。重寫TreeMap的比較器:將TreeMap的Key值根據(jù)“_”拆分,先根據(jù)OWGA值進(jìn)行降序排列,再分別根據(jù)層次、行號和列號進(jìn)行升序排列。該方法將客戶端最近頻繁請求的且高分辨率的瓦片數(shù)據(jù)始終保存在內(nèi)存中,減少耗時的文件I/O操作,實現(xiàn)服務(wù)器對客戶端請求的快速響應(yīng)。
2.1 服務(wù)器對客戶端HTTP請求的響應(yīng)
首先對服務(wù)器程序進(jìn)行配置,設(shè)置其運行內(nèi)存為20 G;然后啟動服務(wù)器程序,多線程循環(huán)監(jiān)聽客戶端發(fā)起的瓦片數(shù)據(jù)下載請求。每次瓦片下載的HTTP請求響應(yīng)解析過程為:
1)服務(wù)器程序監(jiān)聽到HTTP請求,解析獲取URL,判斷URL是否完整,若不完整,則返回400錯誤代碼到客戶端;判斷請求協(xié)議是否正確,若不正確,則返回400錯誤代碼到客戶端;判斷請求方法是否正確,若不正確,則返回405錯誤代碼到客戶端。若URL完整,同時請求協(xié)議和請求方法都正確,則得到符合規(guī)范的URL;然后組合參數(shù)獲得請求目標(biāo)瓦片的鍵值。解析HTTP請求流程如圖 2所示。
圖2 解析HTTP請求流程圖
2)在內(nèi)存瓦片對象保存的Map鏈表中查找請求目標(biāo)瓦片的鍵值,若存在,則訪問頻率加1;若達(dá)到最大訪問頻率,則將鏈表中所有瓦片對象的訪問頻率減1,并修改訪問時間屬性,重新計算對象的OWGA值。響應(yīng)客戶端HTTP請求目標(biāo)瓦片的流程如圖 3所示。若內(nèi)存瓦片對象鏈表中不存在該瓦片鍵值,則根據(jù)請求參數(shù)構(gòu)建組合該瓦片的存儲路徑,并判斷文件路徑下瓦片是否存在。若瓦片存在,則判斷服務(wù)器程序可用內(nèi)存是否低于閾值,若不低于閾值,則構(gòu)建該瓦片的內(nèi)存對象;否則,刪除瓦片對象中OWGA值最小且低分辨率的內(nèi)存瓦片數(shù)據(jù),然后將本地文件讀入到內(nèi)存,構(gòu)建該瓦片的內(nèi)存對象。若瓦片不存在,則返回404錯誤代碼到客戶端。
3)將內(nèi)存中的請求目標(biāo)瓦片數(shù)據(jù)以流形式返回到客戶端。
4)根據(jù)瓦片對象的OWGA值和瓦片鍵值的優(yōu)先級將內(nèi)存鏈表中對象進(jìn)行排序,即一次完整的響應(yīng)HTTP下載瓦片數(shù)據(jù)流程結(jié)束。
圖3 響應(yīng)客戶端HTTP請求目標(biāo)瓦片的流程圖
2.2 內(nèi)存瓦片對象的設(shè)計
為了便于瓦片數(shù)據(jù)在內(nèi)存中的索引和查找,使用Key-Value鍵值對的方式進(jìn)行保存。Key為瓦片對象的鍵值,Value為構(gòu)建的瓦片對象。瓦片對象屬性包括:瓦片鍵值、最近一次訪問時間、訪問頻率、瓦片名字、瓦片數(shù)據(jù)的實體存儲字節(jié)數(shù)組、瓦片的OWGA值和瓦片的最長存活時間。其中內(nèi)存瓦片對象的數(shù)據(jù)結(jié)構(gòu)設(shè)計如下:
Cache{
private String key; '瓦片對象的鍵值
private double reqTime; '最近一次訪問時間
private int reqNum; '內(nèi)存對象的訪問頻率
private String imgName; '瓦片名字
private byte[] content; '存儲瓦片的實體
private double weightNum; '瓦片的OWGA值
public static final long TIME_OUT = 2592000000L; ' 設(shè)定瓦片的生存時間
}
其中瓦片的OWGA值是根據(jù)瓦片對象的訪問時間和訪問頻率計算得到的,其公式為:
式中,x1、x2分別為訪問時間屬性和訪問頻率屬性;u1、u2分別為對應(yīng)屬性的權(quán)重,且
式中,tlastvisit為對象最近一次訪問時間的ms數(shù);tsys為系統(tǒng)當(dāng)前時間的ms數(shù);t30為距離當(dāng)時系統(tǒng)30 d的ms數(shù);fcurrent為該對象的訪問頻率;fmax為系統(tǒng)最大訪問頻率。這樣處理的目的是為了將x1、x2降到同一量級區(qū)間,且在(0,1)之間均勻分布。根據(jù)指數(shù)函數(shù)的特性,y=ax,(a>0,且a≠1,x∈R),當(dāng)a∈(0,1)且x一定時,隨a的增大,y也增大,即當(dāng)瓦片對象越是最近被訪問、訪問越頻繁,OWGA值就越大。
本文模擬實現(xiàn)了兩個實驗:①實現(xiàn)WMTS服務(wù),通過多次HTTP請求,最后求得一次HTTP請求中各處理階段所占時間比例;②實現(xiàn)基于OWGA緩存的海量遙感數(shù)據(jù)發(fā)布服務(wù),測試在內(nèi)存緩存不斷增加情況下,一次HTTP請求中各處理階段所占的時間比例。
3.1 測試環(huán)境搭建
本文采用的服務(wù)器配置為:Window Server 2008 64 位操作系統(tǒng),Intel(R) Xeon CPU E5-2609 v2@ 2.50G Hz,32 G內(nèi)存,6 TB硬盤;4臺客戶端機(jī)器配置為:Windows7 64位操作系統(tǒng),Intel(R) Core i7 5600 @3.3G Hz,8 GB內(nèi)存,1TB硬盤;服務(wù)器和客戶端機(jī)器處于同一千兆局域網(wǎng)內(nèi)。使用Java語言和Eclipse環(huán)境開發(fā)遙感瓦片數(shù)據(jù)發(fā)布服務(wù)程序和測試用于遙感瓦片數(shù)據(jù)下載模擬客戶端程序。實驗以覆蓋全國的遙感瓦片數(shù)據(jù)為發(fā)布瓦片數(shù)據(jù)源,總?cè)萘靠蛇_(dá)4 TB,服務(wù)器配置運行內(nèi)存為20 GB。
3.2 單張瓦片數(shù)據(jù)服務(wù)響應(yīng)時間測試
服務(wù)器程序模擬實現(xiàn)傳統(tǒng)WMTS瓦片服務(wù)模式,根據(jù)客戶端發(fā)送的遙感瓦片數(shù)據(jù)下載HTTP請求,服務(wù)器程序詳細(xì)記錄getKey(獲取請求瓦片鍵值)、searchFile(根據(jù)瓦片鍵值找到該瓦片)和readToMem(將本地存儲瓦片讀入到內(nèi)存中)3個階段的耗時,服務(wù)器將讀入內(nèi)存中的瓦片數(shù)據(jù)反饋給客戶端并進(jìn)行下載這一階段受網(wǎng)絡(luò)帶寬影響較大,本測試暫不考慮該階段耗時。通過對服務(wù)器響應(yīng)客戶端發(fā)起的1萬次遙感瓦片數(shù)據(jù)下載請求耗時進(jìn)行統(tǒng)計,測試結(jié)果如圖 4所示。
一張遙感瓦片數(shù)據(jù)下載的平均耗時約為10.98 ms,計算得知各階段所占比重分別為 1.46%、24.13%和74.41%,花費時間最多的處理階段是readToMem。因此在頻繁訪問的情況下,縮短該部分在服務(wù)器響應(yīng)過程中的比重將有助于提升服務(wù)器整體響應(yīng)性能。
3.3 不同算法下的HTTP請求響應(yīng)時間
以北京地區(qū)為例,由4臺客戶端多線程不斷向服務(wù)器發(fā)起瓦片數(shù)據(jù)下載請求,隨機(jī)訪問該區(qū)域1 m~5 km分辨率瓦片數(shù)據(jù),通過對服務(wù)器端數(shù)以萬次響應(yīng)的統(tǒng)計,計算得到一次HTTP請求平均時間;并分配瓦片訪問時間屬性和訪問頻率屬性不同的權(quán)重,測試結(jié)果如圖 5所示。其中tw為訪問時間屬性權(quán)重,fw為訪問頻率屬性權(quán)重。
圖4 HTTP請求響應(yīng)的各階段平均時間柱狀圖
圖5 不同權(quán)重下平均一次HTTP請求各處理階段時間圖
由圖5可知,訪問時間和訪問頻率的權(quán)值比值為1∶1時效果最佳。在此實驗基礎(chǔ)上,與LRU和LFU算法進(jìn)行對比,測試3種算法下內(nèi)存命中率情況和一 次HTTP請求平均時間情況,如圖 6、7所示。隨著內(nèi)存塊數(shù)量的不斷增加,3種內(nèi)存置換算法的內(nèi)存命中率差別不大,但OWGA算法在時間效率上占有優(yōu)勢。
圖6 LRU、LFU和OWGA算法下內(nèi)存命中率對比圖
針對如何提高基于五層十五級組織結(jié)構(gòu)的海量遙感瓦片數(shù)據(jù)的快速發(fā)布服務(wù)能力的問題,本文首先對傳統(tǒng)的WMTS瓦片服務(wù)模式進(jìn)行了研究,并對客戶端發(fā)起的HTTP請求進(jìn)行測試,詳細(xì)記錄了響應(yīng)過程中各處理階段所占的時間比重,統(tǒng)計分析結(jié)果得知客戶端響應(yīng)時間主要花費在將本地磁盤存儲的目標(biāo)瓦片數(shù)據(jù)讀入到內(nèi)存的階段,因此減少耗時的I/O操作,將能很大程度地提高服務(wù)器性能。為了縮短響應(yīng)時間,本文提出了基于OWGA緩存的海量遙感瓦片數(shù)據(jù)快速發(fā)布方法,通過Key-Value鍵值對的方式實現(xiàn)了對內(nèi)存中瓦片對象的索引和查找;同時根據(jù)遙感瓦片對象的OWGA值和瓦片鍵值的大小進(jìn)行排序,使得客戶端最近頻繁請求的且高分辨率的瓦片數(shù)據(jù)常駐內(nèi)存,當(dāng)內(nèi)存空間不足時,移除OWGA值較低且低分辨率的瓦片數(shù)據(jù),減少了文件I/O操作。在隨機(jī)訪問模式下,通過與最常用的LRU和LFU算法進(jìn)行對比可知,本文提出的算法在時間效率上比LRU和LFU算法更有優(yōu)勢。
圖7 OWGA、LRU和LFU算法下一次HTTP請求平均時間對比圖
[1] 王淵博,馮德俊,李淑娟,等.基于遙感信息的農(nóng)作物生物量估算研究進(jìn)展[J].遙感技術(shù)與應(yīng)用,2016,31(3):468-475
[2] 陳陽,趙俊三,陳應(yīng)躍.基于ENVI的高分辨率遙感影像城市綠地信息提取研究[J].測繪工程,2105,24(4):33-36
[3] 張娟,牟乃夏,李曉紅.遙感技術(shù)在地質(zhì)災(zāi)害調(diào)查中的應(yīng)用:以棗莊市為例[J].軟件導(dǎo)刊,2016,15(6):120-122
[4] 聶云峰,劉海玲,許虎.GeoWebCache瓦片地圖服務(wù)中間件研究[J].測繪科學(xué),2011,36(6):207-209
[5] 彭杰. 基于切片地圖Web服務(wù)的地理信息發(fā)布技術(shù)研究[D].杭州:浙江大學(xué),2011
[6] 中國科學(xué)院遙感應(yīng)用研究所.一種基于經(jīng)緯網(wǎng)格的數(shù)據(jù)分級組織方法:CN102346923A[P]. 2012-02-08
[7] 肖儂,趙英杰,劉芳,等.基于順序檢測的雙隊列緩存替換算法[J].中國科學(xué)(信息科學(xué)),2011,41(4):429-439
[8] 李靜梅,王超宇.一種改進(jìn)的自適應(yīng)時鐘算法[J].計算機(jī)工程, 2012,38(20):286-289
[9] 李占勝,畢會娟,李艷平,等.一種對LRFU置換策略的自適應(yīng)改進(jìn)[J].計算機(jī)工程與應(yīng)用,2008,44(17):153-157
[10] 韓永,姚念民,蔡紹濱.基于局部性定量分析模型的自適應(yīng)替換算法LA-LRFU[J].計算機(jī)學(xué)報,2014,37(7):1 538-1 547
[11] 王小林,還璋武.基于CAR動態(tài)調(diào)整的改進(jìn)的LRFU算法-CLRFU[J].長春師范大學(xué)學(xué)報,2016,35(4):31-37
P237
B
1672-4623(2017)05-0067-04
10.3969/j.issn.1672-4623.2017.0052.1
蘇煥煥,碩士,研究方向為空間信息處理。
2016-07-26。
項目來源:高分重大專項課題資助項目(Y4D00100GF、Y4D0100038);中科院戰(zhàn)略先導(dǎo)專項課題資助項目(Y1Y02230XD)。