朱建廣, 張 文, 劉 超, 翟世奎
(1.中國海洋大學(xué), 山東 青島 266100; 2.青島藍(lán)灣信息科技有限公司, 山東 青島 266109; 3.山東農(nóng)業(yè)工程學(xué)院, 山東 濟南 250100)
近年來,隨著計算機技術(shù)、網(wǎng)絡(luò)通信技術(shù)、物聯(lián)網(wǎng)技術(shù)、地理空間信息技術(shù)快速發(fā)展,人們開始利用地理信息系統(tǒng)(GIS)與網(wǎng)絡(luò)、通信等技術(shù)相結(jié)合的方法,解決目前日益增多的異構(gòu)數(shù)據(jù)獲取困難問題,實現(xiàn)空間信息共享。同時,從地理空間信息基礎(chǔ)設(shè)施到地理空間信息處理系統(tǒng)、數(shù)字地球、智慧城市等建設(shè)方面,地理空間信息共享正發(fā)揮著越來越重要的作用[1]。
隨著信息系統(tǒng)存儲數(shù)據(jù)量的日益增加,隨之帶來了諸多數(shù)據(jù)獲取問題。Google提出的Google File System(GFS)數(shù)據(jù)存儲方案和MapReduce數(shù)據(jù)處理模式很好的解決了大數(shù)據(jù)環(huán)境下的數(shù)據(jù)存儲和數(shù)據(jù)處理問題[2-3]。為后續(xù)的研究工作提供了很好的思路和方向。
隨著空間信息的共享,越來越多的行業(yè)相關(guān)人員訪問中心數(shù)據(jù)庫,并由此帶來了服務(wù)器的高負(fù)荷和負(fù)載均衡問題。本文通過研究訪問量曲線變化圖發(fā)現(xiàn)訪問量的變化呈現(xiàn)周期性規(guī)律。本文通過利用這種周期性規(guī)律,提出了地理空間信息云平臺負(fù)載調(diào)度算法。
該算法參考GFS數(shù)據(jù)存儲方案,將數(shù)據(jù)進(jìn)行多副本存儲架構(gòu)。該存儲架構(gòu)不但可以解決數(shù)據(jù)的完整性問題,還能有效解決高峰期的數(shù)據(jù)請求負(fù)載均衡問題。本文設(shè)計的算法通過哈希函數(shù)來處理高峰請求的負(fù)載均衡問題,將不同的請求散列在諸多相同副本之上。副本數(shù)據(jù)利用非高峰時期進(jìn)行復(fù)制,副本隊列總長度一定,超出隊列長度,系統(tǒng)將會自動清理舊的副本數(shù)據(jù)。所有過程由主(Master)服務(wù)器統(tǒng)一調(diào)控。
云平臺所有數(shù)據(jù)共享接口通過Web Service技術(shù)實現(xiàn),并設(shè)計對應(yīng)的數(shù)據(jù)訪問機制、數(shù)據(jù)共享機制和數(shù)據(jù)安全機制。
經(jīng)過驗證,本文所設(shè)計的負(fù)載均衡算法有效可行,可有效縮短平均請求相應(yīng)時間。
本文通過對城市經(jīng)濟建設(shè)和整個系統(tǒng)建設(shè)環(huán)境的綜合性分析,以及城市對地理信息系統(tǒng)的需求分析,結(jié)合當(dāng)今地理空間信息系統(tǒng)跨平臺數(shù)據(jù)共享和數(shù)據(jù)操作的實際情況,以需求促進(jìn)應(yīng)用開發(fā),推動城市信息化建設(shè),包括地理空間信息基礎(chǔ)設(shè)施建設(shè)、地理空間信息資源開發(fā)和共享、地理空間信息技術(shù)應(yīng)用和信息產(chǎn)業(yè)發(fā)展等。系統(tǒng)標(biāo)準(zhǔn)化框架的設(shè)計主要從交互性、易用性、共享性以及穩(wěn)定性方面進(jìn)行綜合考慮。
本文設(shè)計的云平臺對地理空間框架數(shù)據(jù)、專題共享空間數(shù)據(jù)、電子地圖數(shù)據(jù)等進(jìn)行集中維護(hù)。由于上述數(shù)據(jù)具有數(shù)據(jù)量大、聯(lián)動更新范圍廣、更新成本高的特點,且用戶對上述數(shù)據(jù)的使用頻率較高,需要借助地理空間信息系統(tǒng)資源共享平臺開展集中存儲與維護(hù)。其共享方式如圖 1所示,各相關(guān)部門定期與資源共享平臺交換對應(yīng)的專題共享空間數(shù)據(jù),保持?jǐn)?shù)據(jù)的一致性。資源共享平臺按照統(tǒng)一標(biāo)準(zhǔn)對此類地理信息數(shù)據(jù)進(jìn)行整合處理后,以Web Service方式發(fā)布框架數(shù)據(jù),為各部門提供具備一致性的地理空間信息服務(wù)。
圖1 地理信息“集中—分布”相結(jié)合的共享方式
對于各領(lǐng)域?qū)俚膶n}業(yè)務(wù)空間數(shù)據(jù),資源共享平臺的分布式共享是通過元數(shù)據(jù)共享和目錄信息共享的方式來實現(xiàn)的,其原理為:各領(lǐng)域的交換節(jié)點將元數(shù)據(jù)信息和目錄信息定期向資源共享平臺進(jìn)行更新;資源共享平臺通過專用管理組件將元數(shù)據(jù)和目錄信息更新到到平臺元數(shù)據(jù)和目錄數(shù)據(jù)庫,并通過Web Service方式向外部節(jié)點提供一致性的元數(shù)據(jù)服務(wù)和目錄服務(wù)。
該平臺采用Web服務(wù)方式共享數(shù)據(jù),開發(fā)者無需了解各部門應(yīng)用系統(tǒng)狀況,形成松散耦合特點的共享模式,使平臺服務(wù)可根據(jù)發(fā)展需要進(jìn)行彈性調(diào)整,同時可以實現(xiàn)對跨平臺的異構(gòu)數(shù)據(jù)進(jìn)行訪問與互操作[4-5]。
數(shù)據(jù)格式轉(zhuǎn)換就是通過數(shù)據(jù)轉(zhuǎn)換中間件將異構(gòu)格式的數(shù)據(jù)轉(zhuǎn)換為標(biāo)準(zhǔn)化數(shù)據(jù)格式。
數(shù)據(jù)直接訪問是指, GIS系統(tǒng)或客戶端對其他GIS系統(tǒng)直接進(jìn)行數(shù)據(jù)訪問或操作。直接數(shù)據(jù)訪問不僅避免了繁瑣的接口編程工作,還使得系統(tǒng)實現(xiàn)了無縫集成[6-7]。
本文實現(xiàn)的地理空間信息資源云平臺按照OGC規(guī)范實現(xiàn)如WMS、WFS、WCS等標(biāo)準(zhǔn)接口,按照OpenGIS的數(shù)據(jù)互操作方式通過Web Service接口進(jìn)行平臺間數(shù)據(jù)的共享。
數(shù)據(jù)轉(zhuǎn)換模式和數(shù)據(jù)直接訪問模式,都是基于對數(shù)據(jù)訪問接口的標(biāo)準(zhǔn)化操作從而解決數(shù)據(jù)共享過程中的異構(gòu)性問題。本文通過復(fù)雜虛擬儀器架構(gòu)組件設(shè)計規(guī)范,提供出一套標(biāo)準(zhǔn)化的數(shù)據(jù)組件開發(fā)模型,通用客戶端通過動態(tài)加載不同數(shù)據(jù)組件以實現(xiàn)數(shù)據(jù)的共享,從而實現(xiàn)系統(tǒng)的無縫集成和多種數(shù)據(jù)格式的互操作。通用OpenGIS客戶端通過發(fā)出數(shù)據(jù)請求獲取數(shù)據(jù),數(shù)據(jù)源服務(wù)器不但要提供標(biāo)準(zhǔn)化的數(shù)據(jù),還要將顯示該數(shù)據(jù)的可視化組件、數(shù)據(jù)處理組件和數(shù)據(jù)操作組件都以組件的形式提供給客戶端。GIS客戶端通過動態(tài)加載數(shù)據(jù)組件再結(jié)合數(shù)據(jù)源的標(biāo)準(zhǔn)化,顯示和操作數(shù)據(jù),具體實現(xiàn)方式全部對用戶隱藏。用過通過該框架可以無縫接入各類標(biāo)準(zhǔn)化OpenGIS系統(tǒng),并查看操作其數(shù)據(jù)。
OpenGIS規(guī)范是一個通用的可以促進(jìn)系統(tǒng)無縫集成的數(shù)據(jù)規(guī)范,可以使得各個系統(tǒng)對地理信息數(shù)據(jù)進(jìn)行分布式的訪問。OpenGIS規(guī)范為軟件開發(fā)者提供了通用組件設(shè)計規(guī)范模板,開發(fā)者可根據(jù)這套規(guī)范進(jìn)行地理空間信息系統(tǒng)的研發(fā),并實現(xiàn)標(biāo)準(zhǔn)化系統(tǒng)。OpenGIS規(guī)范的主要規(guī)范框架包括:
(1)用數(shù)字表示地球和地球現(xiàn)象的通用方法;
(2)訪問、處理、管理、表示、共享地理數(shù)據(jù)的通用模式;
(3)建立開放地理數(shù)據(jù)模型和開放GIS 服務(wù)模式,從技術(shù)和制度上搭建解決交互性問題框架。
OpenGIS數(shù)據(jù)的集成模式和數(shù)據(jù)的互操作實現(xiàn)方式為無縫集成多種GIS系統(tǒng)提供了一個快捷的方案和完善的實現(xiàn)思路。
空間基礎(chǔ)信息數(shù)據(jù)庫群的主要任務(wù)是整理、整合各類空間基礎(chǔ)數(shù)據(jù),按照標(biāo)準(zhǔn)格式要求形成數(shù)據(jù)集,并加工處理成數(shù)據(jù)產(chǎn)品,用于發(fā)布或共享。從功能的視角看,空間基礎(chǔ)信息數(shù)據(jù)庫群為空間基礎(chǔ)信息共享提供源源不斷的資源,它既是資源共享平臺的核心,也是相關(guān)應(yīng)用的開發(fā)基礎(chǔ)。
該平臺不但要保證數(shù)據(jù)的共享,還要對數(shù)據(jù)的完整性進(jìn)行控制。我們基于ESRI Geodatabase數(shù)據(jù)模型組織存放的空間數(shù)據(jù),并根據(jù)GFS的設(shè)計思路,對每個數(shù)據(jù)進(jìn)行3個及3個以上的副本存儲以保障負(fù)載均衡問題、數(shù)據(jù)完整性和大數(shù)據(jù)量訪問問題。
為了應(yīng)對大數(shù)量訪問,數(shù)據(jù)庫采用主從服務(wù)器工作模式進(jìn)行管理,其拓?fù)浣Y(jié)構(gòu)如圖2所示。
圖2 主從服務(wù)器工作模式拓?fù)鋱D
Master服務(wù)器負(fù)責(zé)處理用戶對數(shù)據(jù)庫的請求操作,并形成請求隊列。Master負(fù)責(zé)對這些請求進(jìn)行分發(fā)。Slave服務(wù)器負(fù)責(zé)處理具體數(shù)據(jù)請求,存儲數(shù)據(jù),并進(jìn)行數(shù)據(jù)傳輸操作。
Master中存儲各個數(shù)據(jù)塊的如下信息:
(1)數(shù)據(jù)塊大小;
(2)數(shù)據(jù)所在服務(wù)器標(biāo)識符;
(3)數(shù)據(jù)副本所在服務(wù)器標(biāo)識符。
Master服務(wù)器只負(fù)責(zé)存儲和操作元數(shù)據(jù)信息,并不對實際數(shù)據(jù)進(jìn)行操作。
Master服務(wù)器要定期對數(shù)據(jù)存儲的Slave服務(wù)器進(jìn)行Ping操作,以判斷服務(wù)器是否失效。如果存儲服務(wù)器失效,Master要更新存儲在其中的元數(shù)據(jù)。并指揮Slave服務(wù)器進(jìn)行數(shù)據(jù)副本的重新生成。
Master中還存放有數(shù)據(jù)訪問請求隊列,對數(shù)據(jù)請求進(jìn)行分配操作。
Slave服務(wù)器中不僅要存放數(shù)據(jù)和數(shù)據(jù)副本,還要存放數(shù)據(jù)副本隊列。隊列中盡可能多的存放其他數(shù)據(jù)的副本數(shù)據(jù),如果隊列滿后,采用FIFO和判斷數(shù)據(jù)副本數(shù)量相結(jié)合的方法進(jìn)行副本數(shù)據(jù)清除操作。
對地理空間信息資源云平臺的訪問請求量有一定的季節(jié)相關(guān)性。根據(jù)歷史數(shù)據(jù)分析,在雨季或遭遇惡劣天氣時,涉海相關(guān)方面對地理空間信息資源云平臺的訪問需求會顯著增大,呈現(xiàn)季節(jié)相關(guān)特征(見圖3)。
從圖中可以明顯看出,每年3月,訪問請求數(shù)量會出現(xiàn)一個小高峰。3月是季節(jié)多變月份,雨水較多,針對地理空間信息資源云平臺的訪問需求會增大,訪問請求數(shù)量相應(yīng)增加。訪問請求數(shù)量在6~8月出現(xiàn)一個非常顯著的峰值。此時是暴雨臺風(fēng)等惡劣氣候多發(fā)季節(jié),旅游、漁業(yè)生產(chǎn)、科研外出船只與人員會高頻率訪問地理空間信息資源數(shù)據(jù)。同樣在12月,由于急劇降溫,訪問請求數(shù)量也會出現(xiàn)一個小高峰。全年其他時間,訪問請求數(shù)量呈現(xiàn)隨機分布。
圖3 訪問請求數(shù)量曲線圖
一年之中針對地理空間信息資源云平臺的訪問請求數(shù)量,達(dá)到3~4倍的波動范圍,僅依靠簡單的隊列處理方式難以及時高效滿足大數(shù)量需求。按照忙時需求配置更多系統(tǒng)軟硬件資源的方式解決該問題,會在閑時產(chǎn)生較大的系統(tǒng)資源浪費。本文根據(jù)訪問請求數(shù)量分布較好的周期性特征,將系統(tǒng)負(fù)載階段劃分為高峰負(fù)載階段和隨機負(fù)載階段兩種類型,以確保用戶較短的平均響應(yīng)時間為目標(biāo),針對兩種階段特點設(shè)計相應(yīng)的負(fù)載均衡分配算法。
首先分析高峰負(fù)載時段特點,該時段可能是一天中的某若干個小時區(qū)間,或是一年中的某個連續(xù)時間段。算法將通過利用空閑時段進(jìn)行副本的制作,并對請求進(jìn)行分流以達(dá)到負(fù)載均衡的效果。算法利用FIFO機制和副本機制有效應(yīng)對了高峰期數(shù)據(jù)分發(fā)問題問題。并利用哈希算法有效對數(shù)據(jù)進(jìn)行分流。
算法步驟如下:
1. 在負(fù)載空閑時間段,復(fù)制3份數(shù)據(jù)副本;
2. 將復(fù)制的數(shù)據(jù)副本加入從屬服務(wù)器的副本隊列中;
3. 將復(fù)制的數(shù)據(jù)副本信息在主服務(wù)器中進(jìn)行注冊;
4. 統(tǒng)計副本數(shù)量,設(shè)定為s;
5. 如果從屬服務(wù)器中數(shù)據(jù)副本隊列已達(dá)到設(shè)定最大值,則首先找到排在副本隊列最前端的數(shù)據(jù);統(tǒng)計其在機群中的副本數(shù)量;若數(shù)據(jù)副本數(shù)量超出預(yù)設(shè)最大值,即清除該副本,同時刪除被清除副本在主服務(wù)器中相應(yīng)的索引;
6. 如果從屬服務(wù)器中數(shù)據(jù)副本隊列尚未達(dá)到設(shè)定最大值,則按照順序查看下一個排序靠前的副本;轉(zhuǎn)到程序5,直至隊列末端。
步驟1~6算法偽代碼如下:
if(checkwetherfastigium(time))
{
Forreach(data in server)
Ndata = data.duplicatetime();
if(slave.queue>=maxvalue)
{
Forreach(slaveserver.queue.data)
{
if(slaveserver.queue.data.n>=3)
slaveserver.queue. delete();
break;
else
continue next;
}
}
else
Ndata.join();
}
7. 在負(fù)載繁忙時間段,主服務(wù)器在短時間內(nèi)集中收到大量訪問請求,按照請求產(chǎn)生順序進(jìn)行排序編號f,按照一下表達(dá)式用哈希函數(shù)對序列進(jìn)行處理,對數(shù)據(jù)副本數(shù)量進(jìn)行取模:
m=hash(f) mods。
8. 按照上述表達(dá)式規(guī)則,將訪問請求分配到編號為n的從屬服務(wù)器上進(jìn)行處理。
步驟7~8的算法偽代碼如下:
Forreach(x in requestQueue)
{
n = hash(x) mod s;
slaveserver(n).process(x);
}
面對隨機負(fù)載高峰,服務(wù)器對數(shù)據(jù)請求進(jìn)行隨機分發(fā)以應(yīng)對高峰負(fù)載,該方法未經(jīng)過嚴(yán)密論證,但通過章節(jié)4的仿真實驗表明,該方法有效可行。詳細(xì)步驟如下:按照GFS部署策略,每塊數(shù)據(jù)在服務(wù)器中至少存在3個副本。在副本隊列未滿時,從屬服務(wù)器不會清除數(shù)據(jù)副本。因此在正常條件下,機群中數(shù)據(jù)副本的數(shù)量應(yīng)不小于3。
隨機負(fù)載會將訪問請求按隨機原則分配到各從屬服務(wù)器上。如果我們用s表示副本數(shù)量,用n表示該副本所在從屬服務(wù)器序列號,則表達(dá)式為:
n=rnd(void) mods。
主服務(wù)器通過隨機數(shù)對系統(tǒng)負(fù)載進(jìn)行臨時均衡操作,實現(xiàn)降低平均響應(yīng)時間的效果。如系統(tǒng)請求超過預(yù)設(shè)最大值k時,需調(diào)用算法3.2,以實現(xiàn)系統(tǒng)負(fù)載均衡。
按照本文架構(gòu)部署設(shè)計了示范平臺,平臺由1臺主服務(wù)器和21臺從屬服務(wù)器組成。服務(wù)器配置為: 1塊Intel 至強5118處理器,64 G內(nèi)存,2塊2TB 6 400 r/min硬盤, 1塊1 000 Mbps全雙工網(wǎng)卡。該平臺以GPS技術(shù)、遙感技術(shù)、GIS系統(tǒng)為基礎(chǔ),建立地理空間基礎(chǔ)數(shù)據(jù)庫和12個專題數(shù)據(jù)庫,實現(xiàn)地理空間基礎(chǔ)資源共享,有效避免重復(fù)投資建設(shè),通過定制應(yīng)用的二次開發(fā)接口,搭建共享在線服務(wù)和空間信息交換系統(tǒng),為各部門提供地理空間信息共享服務(wù)。
平臺建立了規(guī)范標(biāo)準(zhǔn)體系,以及地理空間資源使用的配套管理制度,提高規(guī)范使用信息資源的能力,從而實現(xiàn)青島高新區(qū)地理空間信息資源的集中統(tǒng)一管理和高效合規(guī)共享,如圖4所示。
圖4 物理分散、邏輯集中模式示意圖
本系統(tǒng)由三部分組成:元數(shù)據(jù)信息的采集模塊、數(shù)據(jù)處理模塊和門戶網(wǎng)站。系統(tǒng)實現(xiàn)流程如圖5所示。首先,客戶端發(fā)出數(shù)據(jù)請求申請,服務(wù)器端響應(yīng)請求申請后,將元數(shù)據(jù)發(fā)送到客戶端,再通過中間件將數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)換為標(biāo)準(zhǔn)格式,提供給客戶端??蛻舳诉\用標(biāo)準(zhǔn)化數(shù)據(jù)解析方法解析數(shù)據(jù),并與元數(shù)據(jù)進(jìn)行合并。
圖5 數(shù)據(jù)共享流程示意圖
4.3.1 對可預(yù)測的高峰進(jìn)行調(diào)度 我們依據(jù)平臺運行的實際統(tǒng)計數(shù)據(jù),對系統(tǒng)訪問請求進(jìn)行模擬,分為3種訪問頻度,分別是每秒1 000條,每秒3 000條和每秒8 000條,記錄每次訪問的實際響應(yīng)時間,計算出不同條件下單個記錄的平均響應(yīng)時間。超過15 s定義為響應(yīng)失敗,每種頻度訪問時長為200 s。
如表1所示,在單位時間訪問請求數(shù)量大幅度增加時,與采用原始系統(tǒng)相比,采用負(fù)載均衡算法的系統(tǒng)平均響應(yīng)時間顯著降低,相應(yīng)的系統(tǒng)丟包率明顯降低。隨著訪問量進(jìn)一步加大,我們可以預(yù)見,如不采用負(fù)載均衡算法,丟包率會更大,系統(tǒng)很可能出現(xiàn)宕機風(fēng)險。如此高的丟包率也可能會導(dǎo)致系統(tǒng)運行不穩(wěn)定,甚至出現(xiàn)未知漏洞風(fēng)險。
表1 系統(tǒng)丟包率對比
4.3.2 隨機高峰調(diào)度 我們按照訪問請求特征模擬隨機請求分布,令部分請求超過最大預(yù)設(shè)閾值,并監(jiān)測采用原系統(tǒng)與采用負(fù)載均衡算法系統(tǒng)下,系統(tǒng)的平均響應(yīng)時間。
如圖6所示,面對較為復(fù)雜的隨機系統(tǒng)響應(yīng),本文所設(shè)計的地理空間信息云平臺負(fù)載均衡算法可持續(xù)穩(wěn)定運行,并有效降低平均請求時間。
圖6 隨機高峰請求仿真結(jié)果示意
本文根據(jù)現(xiàn)代物聯(lián)網(wǎng)對地理空間信息資源的需求和利用情況,提出了地理空間信息云平臺負(fù)載調(diào)度算法。根據(jù)該算法所設(shè)計的架構(gòu)建設(shè)資源共享平臺,實現(xiàn)數(shù)據(jù)共享的方法。并將系統(tǒng)請求分為可預(yù)測高峰請求和隨機高峰請求,并統(tǒng)計請求的平均響應(yīng)時間。結(jié)果顯示,該算法有效可行,可大幅減少用戶平均響應(yīng)時間。