蘇煥煥,沈夏炯,趙亞萌,徐 鵬,黃祥志
(1.河南大學 計算機與信息工程學院,河南 開封 475004;2.中國科學院遙感與數字地球研究所,北京 100101)
基于OWGA緩存的海量遙感瓦片數據發布
蘇煥煥1,2,沈夏炯1,趙亞萌2,徐 鵬1,2,黃祥志2
(1.河南大學 計算機與信息工程學院,河南 開封 475004;2.中國科學院遙感與數字地球研究所,北京 100101)
通過模擬實現傳統的WMTS瓦片服務對客戶端發來下載瓦片數據的HTTP請求進行響應,計算得到各處理階段所用的平均時間,分析測試結果可知,將請求的本地儲存瓦片讀取到內存中所花費時間占總響應時間的70%以上。為縮短服務器響應時間,提出了基于OWGA緩存的發布方法,將客戶端最近頻繁請求的、高分辨率的瓦片數據常駐內存,以減少文件I/O操作;并在緩存不足時移除OWGA值較低且低分辨率的瓦片數據。通過與常用的內存緩存置換算法LRU、LFU對比可知,在隨機訪問模式下,該算法的時間效率優于其他兩種算法。
五層十五級組織結構;數據發布;HTTP協議;OWGA算子;內存緩存
遙感影像數據是一種具有超高容量、可靠性強、方便及時等特點的信息載體。近年來,隨著遙感衛星的密集發射,每天都將產生數TB的遙感影像數據,這些數據在國土資源、城市建設和災害預測等領域得到了廣泛應用[1-3]。海量遙感影像數據的產生不僅為數據的組織、存儲和管理帶來了嚴峻的挑戰;而且對遙感影像數據的傳播和應用提出了更高的要求。
目前,較成熟的地理空間數據發布服務器軟件包括GeoServer、ArcGIS Server等,可實現單張遙感影像和經拼接、融合等操作生成的大數據量影像的快速發布服務。GeoServer實現了OGC制定的WMS、WCS和WFS等標準,并自GeoServer 1.7.5版本起,內置了GWC組件。GWC是OpenGEO 開發的一個開源瓦片地圖服務中間件,采用動態切圖策略,具有地圖現勢性好、訪問流暢等優點[4]。GWC運用自帶的存儲器緩存客戶請求過程中產生的地圖瓦片,并按照一定策略對瓦片緩存進行管理,從而提高地圖服務速度,實現更好的用戶體驗。ArcGIS Server也實現了WMS、WCS和WFS等標準,并自ArcGIS Server 10.1版本起,支持WMTS服務標準,并提供了融合緩存、多圖層緩存以及按需緩存等緩存方式。WMTS切片地圖Web服務是指按接口規范返回特定空間地理位置內數據制作的地圖切片,允許用戶訪問切片地圖,并將切片地圖作為操作的最小單元[5]。
雖然上述成熟的服務器可利用WMTS服務對外提供遙感瓦片數據服務,但傳統的WMTS服務每次收到客戶端請求都需將目標瓦片從本地文件存儲讀取到內存中,再反饋給客戶端;當大量地圖應用客戶端訪問同一區域瓦片時,成百上千次的重復文件I/O操作非常浪費服務器資源,且較耗時,影響用戶體驗。針對此問題,本文提出了基于OWGA緩存的海量遙感瓦片數據快速發布方法,為客戶端提供快速響應,達到更好的用戶體驗。
1.1 遙感瓦片數據的文件存儲結構
利用專利CN102346923A“一種基于經緯網格的數據分級組織方法”[6]提出的五層十五級遙感數據組織模型實現了海量遙感影像數據的瓦片化組織、存儲和管理。該模型是將180°×360°的地球表層空間按 50°、5°、0.5°、0.05°、0.005°為基準,建立十進制空間分辨率標準化數據層級,每層內再按5∶2.5∶1比例構成3級標準瓦片,每張瓦片的像元大小為1 000×1 000,每張瓦片的數據量可控制在MB級。在文件存儲系統中,每一層級對應相應的分辨率,最低層級對應最高分辨率。這樣就形成了層級由小到大,切片數據量由大到小的金字塔形結構。五層十五級的文件存儲結構在磁盤存儲結構上的表現形式為:根目錄圖層名稱層級(level)行號(row)列號(col) level_row_col.png。遙感影像切片數據的文件存儲體系結構如圖 1所示。
1.2 OWGA算子
OWGA算子是常用的信息集結算子;而多屬性決策一般是利用已有的決策信息,通過一定的方式對一 組(有限個)備選方法進行排序并擇優。基于該算子的多屬性決策方法是較為簡潔實用的一種。
定義:設OWGA: R+n→R+,若

式中,w=(w1,w2,…,wn)為與函數OWGA相關聯的加權向量,滿足為數據中第i大的元素;R+為正實數集。

圖1 遙感瓦片數據的文件存儲體系結構圖
1.3 內存緩存機制
緩存技術是減少磁盤與內存性能差距,提高存儲系統整體性能的基礎技術之一,被廣泛應用于各種文件服務器、存儲服務器、數據庫服務器和網頁服務器中。使用緩存技術能有效減少冗余數據傳輸,提高數據加載速度,降低服務器負荷。
內存緩存置換算法主要包括基于訪問時間的置換策略(如LRU)、基于訪問頻率的置換策略(如LFU)以及二者結合的置換策略。研究二者結合的置換策略的相關文獻[7-11]雖然同時考慮了訪問對象的訪問時間和頻率,但很少有將這兩個屬性放在同一量級并按照不同權重進行比較的研究。本文提出的基于OWGA緩存的海量遙感瓦片數據快速發布方法將瓦片的訪問時間和頻率降化為同一量級進行比較,并為不同屬性分配相應的權值,得到每個瓦片對象的OWGA值。
該方法同時兼顧了請求瓦片的訪問時間、訪問頻率和鍵值3個屬性,其中鍵值是瓦片的唯一標識,由瓦片的層級、行號、列號組成。在內存中,通過ConcurrentHashMap鏈表對內存對象進行索引管理,同時構建一個TreeMap鏈表,其中Key為字符型,由瓦片對象的OWGA和鍵值組合構成(如OWGA_level_ row_col),每次訪問需重新計算該目標瓦片的OWGA值,所以鏈表對象的Key是變化的。重寫TreeMap的比較器:將TreeMap的Key值根據“_”拆分,先根據OWGA值進行降序排列,再分別根據層次、行號和列號進行升序排列。該方法將客戶端最近頻繁請求的且高分辨率的瓦片數據始終保存在內存中,減少耗時的文件I/O操作,實現服務器對客戶端請求的快速響應。
2.1 服務器對客戶端HTTP請求的響應
首先對服務器程序進行配置,設置其運行內存為20 G;然后啟動服務器程序,多線程循環監聽客戶端發起的瓦片數據下載請求。每次瓦片下載的HTTP請求響應解析過程為:
1)服務器程序監聽到HTTP請求,解析獲取URL,判斷URL是否完整,若不完整,則返回400錯誤代碼到客戶端;判斷請求協議是否正確,若不正確,則返回400錯誤代碼到客戶端;判斷請求方法是否正確,若不正確,則返回405錯誤代碼到客戶端。若URL完整,同時請求協議和請求方法都正確,則得到符合規范的URL;然后組合參數獲得請求目標瓦片的鍵值。解析HTTP請求流程如圖 2所示。

圖2 解析HTTP請求流程圖
2)在內存瓦片對象保存的Map鏈表中查找請求目標瓦片的鍵值,若存在,則訪問頻率加1;若達到最大訪問頻率,則將鏈表中所有瓦片對象的訪問頻率減1,并修改訪問時間屬性,重新計算對象的OWGA值。響應客戶端HTTP請求目標瓦片的流程如圖 3所示。若內存瓦片對象鏈表中不存在該瓦片鍵值,則根據請求參數構建組合該瓦片的存儲路徑,并判斷文件路徑下瓦片是否存在。若瓦片存在,則判斷服務器程序可用內存是否低于閾值,若不低于閾值,則構建該瓦片的內存對象;否則,刪除瓦片對象中OWGA值最小且低分辨率的內存瓦片數據,然后將本地文件讀入到內存,構建該瓦片的內存對象。若瓦片不存在,則返回404錯誤代碼到客戶端。
3)將內存中的請求目標瓦片數據以流形式返回到客戶端。
4)根據瓦片對象的OWGA值和瓦片鍵值的優先級將內存鏈表中對象進行排序,即一次完整的響應HTTP下載瓦片數據流程結束。

圖3 響應客戶端HTTP請求目標瓦片的流程圖
2.2 內存瓦片對象的設計
為了便于瓦片數據在內存中的索引和查找,使用Key-Value鍵值對的方式進行保存。Key為瓦片對象的鍵值,Value為構建的瓦片對象。瓦片對象屬性包括:瓦片鍵值、最近一次訪問時間、訪問頻率、瓦片名字、瓦片數據的實體存儲字節數組、瓦片的OWGA值和瓦片的最長存活時間。其中內存瓦片對象的數據結構設計如下:
Cache{
private String key; '瓦片對象的鍵值
private double reqTime; '最近一次訪問時間
private int reqNum; '內存對象的訪問頻率
private String imgName; '瓦片名字
private byte[] content; '存儲瓦片的實體
private double weightNum; '瓦片的OWGA值
public static final long TIME_OUT = 2592000000L; ' 設定瓦片的生存時間
}
其中瓦片的OWGA值是根據瓦片對象的訪問時間和訪問頻率計算得到的,其公式為:

式中,x1、x2分別為訪問時間屬性和訪問頻率屬性;u1、u2分別為對應屬性的權重,且

式中,tlastvisit為對象最近一次訪問時間的ms數;tsys為系統當前時間的ms數;t30為距離當時系統30 d的ms數;fcurrent為該對象的訪問頻率;fmax為系統最大訪問頻率。這樣處理的目的是為了將x1、x2降到同一量級區間,且在(0,1)之間均勻分布。根據指數函數的特性,y=ax,(a>0,且a≠1,x∈R),當a∈(0,1)且x一定時,隨a的增大,y也增大,即當瓦片對象越是最近被訪問、訪問越頻繁,OWGA值就越大。
本文模擬實現了兩個實驗:①實現WMTS服務,通過多次HTTP請求,最后求得一次HTTP請求中各處理階段所占時間比例;②實現基于OWGA緩存的海量遙感數據發布服務,測試在內存緩存不斷增加情況下,一次HTTP請求中各處理階段所占的時間比例。
3.1 測試環境搭建
本文采用的服務器配置為:Window Server 2008 64 位操作系統,Intel(R) Xeon CPU E5-2609 v2@ 2.50G Hz,32 G內存,6 TB硬盤;4臺客戶端機器配置為:Windows7 64位操作系統,Intel(R) Core i7 5600 @3.3G Hz,8 GB內存,1TB硬盤;服務器和客戶端機器處于同一千兆局域網內。使用Java語言和Eclipse環境開發遙感瓦片數據發布服務程序和測試用于遙感瓦片數據下載模擬客戶端程序。實驗以覆蓋全國的遙感瓦片數據為發布瓦片數據源,總容量可達4 TB,服務器配置運行內存為20 GB。
3.2 單張瓦片數據服務響應時間測試
服務器程序模擬實現傳統WMTS瓦片服務模式,根據客戶端發送的遙感瓦片數據下載HTTP請求,服務器程序詳細記錄getKey(獲取請求瓦片鍵值)、searchFile(根據瓦片鍵值找到該瓦片)和readToMem(將本地存儲瓦片讀入到內存中)3個階段的耗時,服務器將讀入內存中的瓦片數據反饋給客戶端并進行下載這一階段受網絡帶寬影響較大,本測試暫不考慮該階段耗時。通過對服務器響應客戶端發起的1萬次遙感瓦片數據下載請求耗時進行統計,測試結果如圖 4所示。
一張遙感瓦片數據下載的平均耗時約為10.98 ms,計算得知各階段所占比重分別為 1.46%、24.13%和74.41%,花費時間最多的處理階段是readToMem。因此在頻繁訪問的情況下,縮短該部分在服務器響應過程中的比重將有助于提升服務器整體響應性能。
3.3 不同算法下的HTTP請求響應時間
以北京地區為例,由4臺客戶端多線程不斷向服務器發起瓦片數據下載請求,隨機訪問該區域1 m~5 km分辨率瓦片數據,通過對服務器端數以萬次響應的統計,計算得到一次HTTP請求平均時間;并分配瓦片訪問時間屬性和訪問頻率屬性不同的權重,測試結果如圖 5所示。其中tw為訪問時間屬性權重,fw為訪問頻率屬性權重。

圖4 HTTP請求響應的各階段平均時間柱狀圖

圖5 不同權重下平均一次HTTP請求各處理階段時間圖
由圖5可知,訪問時間和訪問頻率的權值比值為1∶1時效果最佳。在此實驗基礎上,與LRU和LFU算法進行對比,測試3種算法下內存命中率情況和一 次HTTP請求平均時間情況,如圖 6、7所示。隨著內存塊數量的不斷增加,3種內存置換算法的內存命中率差別不大,但OWGA算法在時間效率上占有優勢。

圖6 LRU、LFU和OWGA算法下內存命中率對比圖
針對如何提高基于五層十五級組織結構的海量遙感瓦片數據的快速發布服務能力的問題,本文首先對傳統的WMTS瓦片服務模式進行了研究,并對客戶端發起的HTTP請求進行測試,詳細記錄了響應過程中各處理階段所占的時間比重,統計分析結果得知客戶端響應時間主要花費在將本地磁盤存儲的目標瓦片數據讀入到內存的階段,因此減少耗時的I/O操作,將能很大程度地提高服務器性能。為了縮短響應時間,本文提出了基于OWGA緩存的海量遙感瓦片數據快速發布方法,通過Key-Value鍵值對的方式實現了對內存中瓦片對象的索引和查找;同時根據遙感瓦片對象的OWGA值和瓦片鍵值的大小進行排序,使得客戶端最近頻繁請求的且高分辨率的瓦片數據常駐內存,當內存空間不足時,移除OWGA值較低且低分辨率的瓦片數據,減少了文件I/O操作。在隨機訪問模式下,通過與最常用的LRU和LFU算法進行對比可知,本文提出的算法在時間效率上比LRU和LFU算法更有優勢。

圖7 OWGA、LRU和LFU算法下一次HTTP請求平均時間對比圖
[1] 王淵博,馮德俊,李淑娟,等.基于遙感信息的農作物生物量估算研究進展[J].遙感技術與應用,2016,31(3):468-475
[2] 陳陽,趙俊三,陳應躍.基于ENVI的高分辨率遙感影像城市綠地信息提取研究[J].測繪工程,2105,24(4):33-36
[3] 張娟,牟乃夏,李曉紅.遙感技術在地質災害調查中的應用:以棗莊市為例[J].軟件導刊,2016,15(6):120-122
[4] 聶云峰,劉海玲,許虎.GeoWebCache瓦片地圖服務中間件研究[J].測繪科學,2011,36(6):207-209
[5] 彭杰. 基于切片地圖Web服務的地理信息發布技術研究[D].杭州:浙江大學,2011
[6] 中國科學院遙感應用研究所.一種基于經緯網格的數據分級組織方法:CN102346923A[P]. 2012-02-08
[7] 肖儂,趙英杰,劉芳,等.基于順序檢測的雙隊列緩存替換算法[J].中國科學(信息科學),2011,41(4):429-439
[8] 李靜梅,王超宇.一種改進的自適應時鐘算法[J].計算機工程, 2012,38(20):286-289
[9] 李占勝,畢會娟,李艷平,等.一種對LRFU置換策略的自適應改進[J].計算機工程與應用,2008,44(17):153-157
[10] 韓永,姚念民,蔡紹濱.基于局部性定量分析模型的自適應替換算法LA-LRFU[J].計算機學報,2014,37(7):1 538-1 547
[11] 王小林,還璋武.基于CAR動態調整的改進的LRFU算法-CLRFU[J].長春師范大學學報,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);中科院戰略先導專項課題資助項目(Y1Y02230XD)。