于萍
(新鄉(xiāng)學院管理學院,河南新鄉(xiāng)453003)
一種基于單機計算資源的遙感網(wǎng)絡(luò)服務構(gòu)建模型
于萍
(新鄉(xiāng)學院管理學院,河南新鄉(xiāng)453003)
提出了一種基于單機計算資源的遙感網(wǎng)絡(luò)服務構(gòu)建模型——遙感服務模擬器。將遙感網(wǎng)絡(luò)服務抽象為用戶交互、模型計算和結(jié)果反饋三個部分,通過設(shè)計基于HTTP協(xié)議的用戶交互映射機制、長時通信機制和多用戶并發(fā)機制,將單機遙感模型直接映射為網(wǎng)絡(luò)服務。實驗證明,該方法可充分利用已有的單機遙感計算資源,只要遙感模型具有控制臺交互的特征,就可實現(xiàn)向網(wǎng)絡(luò)服務的直接遷移。
遙感服務模擬器;單機計算模型;網(wǎng)絡(luò)服務;直接映射
經(jīng)過長期發(fā)展,遙感領(lǐng)域的研究者已建立了大量的遙感模型,獲得了大量的經(jīng)典算法[1],如大氣模型、土壤模型、水體模型和生長模型等。每一類模型又可細分為若干分支,如大氣模型可分為6S模型[2-3]、Modtran模型[4]等。遙感模型相對于信息技術(shù),尤其是網(wǎng)絡(luò)服務技術(shù),由于發(fā)展較早,一些經(jīng)典算法(如6S模型)大多以Fortran或C等計算機語言來實現(xiàn),以單機、單用戶的方式運行,以控制臺(如DOS窗口)的方式提供人機交互。隨著信息技術(shù)的發(fā)展,以網(wǎng)絡(luò)服務形式實現(xiàn)的遙感模型計算,即為多數(shù)用戶共享的計算資源,成為遙感模型發(fā)展的趨勢之一[5-6]。但目前只有部分遙感模型能經(jīng)過改造被用于網(wǎng)絡(luò)服務,其主要原因是:1)將遙感模型算法從單機程序移植到網(wǎng)絡(luò)服務,需使用網(wǎng)絡(luò)服務語言如JSP、ASP等對其計算過程重新實現(xiàn),而早期遙感模型的實現(xiàn)語言各不相同,語言之間的遷移比較困難,工作量巨大;2)將遙感模型算法由單機程序移植到網(wǎng)絡(luò)服務,需要對遙感模型機理有相當?shù)牧私猓瑫r還需要具備遙感專業(yè)知識和計算機專業(yè)知識,這直接決定了遙感模型的網(wǎng)絡(luò)化移植具有較高的專業(yè)門檻。
本文提出了一種新的遙感模型網(wǎng)絡(luò)服務的封裝方法——遙感服務模擬器。在充分利用已有計算資源的情況下,它不僅可實現(xiàn)快速地將單機計算向網(wǎng)絡(luò)服務的移植,而且能同時保證充分的可擴展性。
網(wǎng)絡(luò)服務的特征主要有以標準HTTP協(xié)議交互、允許多用戶并發(fā)訪問、實時交互與反饋等。遙感計算模型的網(wǎng)絡(luò)服務流程大致可以抽象為用戶交互(參數(shù)輸入)、模型計算和結(jié)果反饋(結(jié)果輸出)等幾個部分,其核心是模型計算。遙感服務模擬器的實現(xiàn)策略是將已有的單機計算資源作為網(wǎng)絡(luò)服務的計算部分,利用單機的計算功能完成模型的計算,得到計算結(jié)果。在此基礎(chǔ)上,使用網(wǎng)絡(luò)服務語言對單機計算資源進行封裝,即使用標準的HTTP協(xié)議,實現(xiàn)網(wǎng)絡(luò)平臺下的用戶交互、并發(fā)訪問和計算調(diào)度,完成單機計算資源向網(wǎng)絡(luò)服務的直接映射。因為這種策略下的網(wǎng)絡(luò)服務是以單機計算資源來實現(xiàn)網(wǎng)絡(luò)計算的,所以稱之為“遙感服務模擬器”。遙感服務模擬器的抽象模型如圖1所示。
圖1 遙感服務模擬器的抽象模型
2.1 基于HTTP協(xié)議的用戶交互映射機制
使用網(wǎng)絡(luò)瀏覽器操作的客戶端無法直接使用服務器端的單機計算程序,換句話說,客戶端無法同計算程序之間建立操作和反饋的交互。因此,解決客戶端與計算程序之間的交互、實現(xiàn)控制計算過程是基于單機計算資源構(gòu)建網(wǎng)絡(luò)服務的前提。
本文設(shè)計了計算模擬器的交互映射模型,模擬器維持兩種交互的輸入流和輸出流:一種面向網(wǎng)絡(luò)客戶端,一種面向單機計算資源。在計算時,模擬器獲取單機計算資源對外暴露的輸入流Ic和輸出流Oc,同時獲得用戶端以HTTP協(xié)議建立的輸入流Iu和輸出流Ou,并將二者在模擬器內(nèi)部實現(xiàn)轉(zhuǎn)換與對接。當用戶以HTTP協(xié)議提交操作時,該操作被模擬器從Ou中獲得并發(fā)送到計算資源的Ic中;當計算資源對操作進行響應并完成計算后,通過Oc向模擬器提交,繼而由模擬器通過Iu向用戶反饋。由此實現(xiàn)網(wǎng)絡(luò)用戶的操作與單機計算資源控制之間的映射。映射流程如圖2所示。
圖2 遙感服務模擬器的交互映射機制
2.2 基于HTTP協(xié)議的長時通信機制
網(wǎng)絡(luò)服務是基于HTTP協(xié)議運行的。HTTP協(xié)議是短時通信協(xié)議,其通信在一次握手(即通信信道中形成輸入流和輸出流)之后,將自動終斷客戶端與服務器之間的通信連接。將這種機制應用于遙感服務模擬器,會出現(xiàn)較大的問題:1)遙感模型的計算過程通常需要輸入大量的參數(shù)和進行人機交互,頻繁地建立和斷開連接會增加服務器的通信和計算壓力,且建立連接的過程需要花費時間;2)遙感模型的計算通常以遙感數(shù)據(jù)為處理對象,而遙感數(shù)據(jù)以像元方式存儲,數(shù)據(jù)量通常較大,若計算時間較長,短時連接機制將無法保持連接至計算完成,或者實時獲取計算資源的計算結(jié)果。
本文提出了基于標準HTTP協(xié)議的長時通信機制。其基本思想是以標準的HTTP協(xié)議建立信道,將信道拆分成單獨的輸入流和輸出流:輸入流只負責用戶交互的提交,不接收模擬器的反饋;輸出流只負責向用戶的反饋,不接收用戶參數(shù)的輸入。這可使通信信道無法形成回合,HTTP協(xié)議無法自動關(guān)閉通信,只需在服務器端阻滯輸出,在網(wǎng)絡(luò)用戶端阻滯監(jiān)聽,即可實現(xiàn)基于標準HTTP協(xié)議的長時通信機制。
2.3 多用戶并發(fā)訪問模擬
網(wǎng)絡(luò)服務的一個特征是多用戶并發(fā),即允許多個網(wǎng)絡(luò)客戶端同時使用同一個計算服務;但單機遙感計算資源通常不考慮(也無需考慮)多用戶并發(fā)訪問的問題。這樣,若直接將單機遙感計算資源向網(wǎng)絡(luò)服務映射,可能會由于多個用戶同時讀寫某一個資源而造成沖突。
筆者設(shè)計了父子模型來實現(xiàn)遙感計算資源的多用戶并發(fā)訪問。其機制是構(gòu)建計算資源庫,即將遙感計算模型連同其所需的相關(guān)資源,以名稱為標志,分門別類地存儲于文件資源庫中,稱為父資源。當用戶C請求訪問某資源R時,模擬器先向用戶C反饋全局唯一的標志ID,然后,在服務器端以ID為虛擬目錄,將計算資源R及其所需的所有相關(guān)文件都備份到目錄ID中,同時將用戶C的工作路徑指向該服務目錄,完成父資源向子資源的派生。在此基礎(chǔ)上,用戶C的交互及計算將全部由子資源來完成,與父資源無關(guān)。當用戶C退出訪問時,臨時目錄ID中的子資源連同產(chǎn)生的中間文件和結(jié)果文件一并刪除,實現(xiàn)對多用戶并發(fā)訪問機制的模擬。
2.4 計算服務的管理機制
遙感計算程序在服務器端啟動后,就被以進程的方式存在服務器端,并通過輸入流和輸出流向客戶端提供交互和計算服務,不過由于該進程由計算模擬器啟動,故需要接受模擬器的管理和調(diào)度。本文設(shè)計如下管理機制:將計算程序的進程P連同從該進程獲取的輸入流I和輸出流O,一并封裝成一個類C,以類C的實例的方式存儲于計算服務隊列中,因為該服務對應于唯一的客戶端,所以使用該客戶端的ID標識此服務。對該服務的計算調(diào)度過程為:當服務器端獲得客戶端的操作請求時,先從請求中取得該客戶端的ID,再通過索引從服務隊列中查找到對應于客戶端的進程實例,從實例中取得輸入流I和輸出流O,然后將客戶端的操作寫入輸出流O中,實時向客戶端反饋計算結(jié)果,引導計算資源完成計算過程;當客戶端退出時會先向服務器發(fā)送退出請求,服務器再從服務隊列中查找到該客戶端的服務進程,關(guān)閉輸入流、輸出流和服務進程,同時刪除與該客戶端對應的子資源及相關(guān)文件,釋放其在服務器端所占用的空間,完成對計算過程的管理。
3.1 原型系統(tǒng)
基于上述模型和關(guān)鍵技術(shù),本文使用跨平臺的Java語言來實現(xiàn)遙感服務模擬器。其中,服務器端使用Servlet來實現(xiàn),網(wǎng)絡(luò)客戶端使用Applet來實現(xiàn)。
(1)服務器端的實現(xiàn)
服務器端輪詢監(jiān)聽客戶端POST和GET連接的請求。當有客戶端計算發(fā)送請求時,服務器先從客戶端的請求中解析出需要執(zhí)行的模型名稱,并判斷計算資源庫中是否有該計算服務,如有,則為客戶端生成全局唯一的ID并返回,同時將該計算資源連同其相關(guān)文件都備份至以該ID為名稱的臨時目錄中,然后使用Runtime.getRuntime().exec()啟動該程序,生成計算進程P,并將工作目錄指向該臨時目錄;同時使用P.get-InputStream()和P.getOutputStream()從進程P中獲得輸入流I和輸出流O,連同客戶端ID一并加入模擬器的服務管理隊列中。整個過程的偽代碼如圖3所示。
圖3 服務器端的偽代碼
(2)客戶端的實現(xiàn)
網(wǎng)絡(luò)客戶端通過POST和GET協(xié)議與服務器端的計算模擬器發(fā)生交互。它分別獲取POST協(xié)議的輸入流IS=HttpURLConnection.getOutputStream()和GET協(xié)議的輸出流OS=HttpURLConnection.getInputStream(),并使用OS向服務器端發(fā)送操作請求,使用IS從服務器端獲得計算結(jié)果。信息流建立完成之后,當網(wǎng)絡(luò)客戶端需要對計算過程進行控制時,它就會以HTTP協(xié)議的長時通信機制為基礎(chǔ),通過OS向模擬器提交請求,由模擬器操作計算資源完成計算,并將計算結(jié)果返回;客戶端則從IS中讀取計算結(jié)果,并寫入計算結(jié)果列表。整個過程的偽代碼如圖4所示。
圖4 服務器與客戶端交互的偽代碼
3.2 應用實例
前面實現(xiàn)了任意通過控制臺交互的單機遙感計算模型向網(wǎng)絡(luò)服務的直接映射。圖5展示了單機版計算程序6S模型向網(wǎng)絡(luò)服務的映射結(jié)果。在映射的過程中未對6S模型的計算程序進行任何修改,直接實現(xiàn)了向網(wǎng)絡(luò)服務的改造。圖5(a)為單機版計算程序的運行效果,圖5(b)是基于計算模擬器的服務運行效果,可以看出,二者在交互反饋和操作流程上完全相同。
圖5 遙感計算模型6S的服務映射
系統(tǒng)還實現(xiàn)了多用戶并發(fā)訪問(圖6)。從圖6可以看出,對同一個服務,每一個網(wǎng)絡(luò)客戶端都具有唯一的ID,客戶端的操作互相不影響,每一個用戶都可以獨立的操作計算過程。對網(wǎng)絡(luò)客戶端而言,其訪問和操作與使用真正的網(wǎng)絡(luò)服務完全相同。
圖6 多用戶并發(fā)訪問效果
本文設(shè)計的遙感服務模擬器模型具有以下優(yōu)點。
(1)可充分利用已有的計算資源。這種優(yōu)勢使得單機遙感計算模型在向網(wǎng)絡(luò)服務遷移時,無需重新實現(xiàn)計算過程,無需考慮內(nèi)部計算機制,也無需考慮遙感模型機理,充分降低了服務遷移的工作量。
(2)具有較強的擴展性。任何遙感計算模型,只要存在控制臺方式的輸入流和輸出流(事實上,大部分早期以Fortran和C語言撰寫的遙感模型均有此類特征),均可使用遙感服務模擬器直接映射為網(wǎng)絡(luò)服務。
(3)本文提出的遙感服務模擬器,對其他領(lǐng)域的類似需求也具有一定的借鑒意義。雖然網(wǎng)絡(luò)語言 (如ASP和JSP等)是網(wǎng)絡(luò)服務的最直接的實現(xiàn)方式,但對已有的本地計算資源而言,遙感服務模擬器也是一種可選方案。
[1] 王芳,陶建軍,姜良美.農(nóng)作物覆蓋地表微波遙感模型研究進展[J].遙感技術(shù)與應用,2011(2):254-262.
[2]KOTCHECNOVA SY,VERMOTE E F,MATARRESE R, et al.Validation of a Vector Version of the 6SRadiative Transfer Code for Atmospheric Correction of Satellite Data:Part I:Path Radiance[J].Applied Optics,2006,45(26):6762-6774.
[3] WILSON R T.Py6S:A Python Interface to the 6S Radiative Transfer Model[J].Computers and Geosciences, 2013(51):166-171.
[4]BERK A,ANDERSON G P,ACHARYA P K,et al. MODTRAN5:A Reformulated Atmospheric Band Model with Auxiliary Species and Practical Multiple Scattering Options[C]//LARAR A M,SUZUKIM,TONG Q,SPIE Proceeding,Multispectral and Hyperspectral Remote Sensing Instruments and Applications II,Bellingham:SPIE Press,2005,5806:662-667.
[5] 曾少斌,謝傳節(jié),李佳琪,等.基于網(wǎng)格服務的遙感圖像并行融合[J].地球信息科學學報,2010(2):269-274.
[6] 朱紅春,劉海英,張繼賢,等.遙感數(shù)據(jù)處理的網(wǎng)格系統(tǒng)仿真實現(xiàn)及應用研究[J].系統(tǒng)仿真學報,2010(9):2095-2099.
【責任編輯 梅欣麗】
A M odel for Fast Transp lanting Local Remote Sensing Program s to W eb Services
YU Ping
(School ofManagement,Xinxiang University,Xinxiang 453003,China)
A new model,named computation service emulator,was proposed for fast transplanting local remote sensing programs to web services.In themodel,computations of the web application are accomplished by local programs,and after that,the interactions under HTTP protocols includingmechanisms of the interaction mapping,the long-time connection,as well as the concurrent access, are simulated,based on which the local programs can be employed directly for web services.Experiment results show that themodel can take full advantages of existing local remote sensing programs,and as long as the local programs have consoles,they can all be transplanted to web services directly withoutanymodification.
remote sensing service emulator;local program;web service;fast transplanting
TP393.093
A
2095-7726(2015)06-0045-04
2014-11-01
國家自然科學基金項目(41201396);河南省科技廳科技計劃項目(122400440052)
于萍(1972-),女,河南新鄉(xiāng)人,副教授,碩士,研究方向:網(wǎng)絡(luò)服務、地理信息系統(tǒng)和虛擬旅游。