陳剛銳,葛 瑩,艾斯卡爾·阿不力米提,趙慧慧
(河海大學(xué) 地球科學(xué)與工程學(xué)院,江蘇 南京 211100)
GIS云計(jì)算系統(tǒng)實(shí)例的框架結(jié)構(gòu)研究
陳剛銳,葛 瑩,艾斯卡爾·阿不力米提,趙慧慧
(河海大學(xué) 地球科學(xué)與工程學(xué)院,江蘇 南京 211100)
云計(jì)算具有可擴(kuò)展性和高可用性的特點(diǎn),能夠快速配置和調(diào)度服務(wù)資源,按需為用戶提供彈性的GIS服務(wù)?;诘湫蛯?shí)例剖析了GIS云計(jì)算系統(tǒng)的框架結(jié)構(gòu),介紹了與GIS云計(jì)算系統(tǒng)框架結(jié)構(gòu)相關(guān)的Web應(yīng)用服務(wù)器工作原理,討論分析了所用典型實(shí)例中云計(jì)算系統(tǒng)各組件的地位與作用。從可擴(kuò)展性和高可用性的角度對(duì)GIS云計(jì)算系統(tǒng)框架結(jié)構(gòu)的實(shí)現(xiàn)方式進(jìn)行了較為深入、全面的探討,歸納了負(fù)載均衡與動(dòng)態(tài)擴(kuò)展在向GIS服務(wù)提供自適應(yīng)性計(jì)算資源和提高云計(jì)算系統(tǒng)容錯(cuò)性方面以及面臨用戶數(shù)量與地理空間數(shù)據(jù)使用量增加時(shí)在保持云計(jì)算系統(tǒng)高性能與高資源利用方面的作用以及相關(guān)方法,總結(jié)了借助云計(jì)算技術(shù)自動(dòng)獲得彈性計(jì)算資源和構(gòu)建高效穩(wěn)定GIS應(yīng)用的技術(shù)途徑與手段。
GIS云計(jì)算系統(tǒng)實(shí)例;ArcGIS Server應(yīng)用服務(wù)器;可擴(kuò)展性;高可用性
ESRI公司于2012年公布了ArcGIS 10.1 for Server版本,以全新Site-GIS Servers框架取代傳統(tǒng)SOM-SOCs體系結(jié)構(gòu)出現(xiàn)在大眾面前,正式開啟ArcGIS軟件的云計(jì)算計(jì)劃[1]。ESRI公司期望通過(guò)云計(jì)算技術(shù),實(shí)現(xiàn)GIS資源的動(dòng)態(tài)彈性服務(wù),全面提高GIS資源利用率,降低GIS應(yīng)用研發(fā)和運(yùn)維成本,做到隨時(shí)隨地、按需、快捷地訪問(wèn)GIS服務(wù)的共享資源。
云計(jì)算作為一種新的基于可配置共享基礎(chǔ)設(shè)施的計(jì)算模式,它在云服務(wù)提供商較少參與的前提下,為用戶提供高性能、高可用、可伸縮的網(wǎng)絡(luò)、存儲(chǔ)、計(jì)算等服務(wù)資源[2]。通過(guò)按需動(dòng)態(tài)配置硬件、軟件和數(shù)據(jù)集,云計(jì)算能向用戶提供基礎(chǔ)設(shè)施、平臺(tái)、存儲(chǔ)、軟件以及應(yīng)用等彈性服務(wù)資源[3]。云計(jì)算的實(shí)現(xiàn)涉及兩方面內(nèi)容:一是云計(jì)算平臺(tái)基礎(chǔ)設(shè)施的構(gòu)建,二是在這個(gè)基礎(chǔ)設(shè)施上的云計(jì)算應(yīng)用程序[4]。任何系統(tǒng)平臺(tái)或者Web應(yīng)用程序,如果要遷移至云計(jì)算環(huán)境,必須從以上兩方面來(lái)實(shí)施。
云計(jì)算是能夠提供可擴(kuò)展性、虛擬化、有效性和可靠性的下一代計(jì)算平臺(tái)。針對(duì)云計(jì)算的這些特點(diǎn),現(xiàn)有ArcGIS云計(jì)算實(shí)現(xiàn)使用的技術(shù)主要體現(xiàn)在以下4個(gè)方面:
(1)以Apache Geronimo應(yīng)用服務(wù)器構(gòu)建ArcGIS Server Site站點(diǎn)。通過(guò)監(jiān)測(cè)GIS Server的ArcGIS組件狀態(tài)變化,為組件自動(dòng)、動(dòng)態(tài)地生成遠(yuǎn)程組件管理代理,動(dòng)態(tài)擴(kuò)展組件的遠(yuǎn)程管理功能,實(shí)現(xiàn)以組件為粒度對(duì)ArcGIS Server Site站點(diǎn)進(jìn)行動(dòng)態(tài)管理。
(2)以P2P計(jì)算模型重構(gòu)ArcGIS Server Site站點(diǎn)。根據(jù)Tomcat-GIS Server-GIS應(yīng)用的層次結(jié)構(gòu)設(shè)計(jì)P2P節(jié)點(diǎn),確保節(jié)點(diǎn)在GIS功能上對(duì)等,實(shí)現(xiàn)ArcGIS資源按需動(dòng)態(tài)配置,使得GIS應(yīng)用具有可擴(kuò)展性,消除傳統(tǒng)SOM-SOCs體系結(jié)構(gòu)中固有的單點(diǎn)失效問(wèn)題。
(3)以預(yù)裝或用戶自定義方式實(shí)現(xiàn)負(fù)載均衡。通過(guò)Web Adaptor組件整合Web服務(wù)器與GIS服務(wù)器,屏蔽GIS Server端口,根據(jù)GIS Server負(fù)載情況轉(zhuǎn)發(fā)Web服務(wù)請(qǐng)求以達(dá)到GIS Server負(fù)載均衡,或?qū)eb Adaptor與應(yīng)用服務(wù)器或?qū)iT的負(fù)載平衡軟件結(jié)合使用,實(shí)現(xiàn)用戶自定義條件的負(fù)載均衡。
(4)以REST軟件架構(gòu)模式重新定義GIS服務(wù)。將ArcGIS數(shù)據(jù)和操作定義為REST式資源,并按URI唯一標(biāo)識(shí)GIS資源,再通過(guò)ArcGIS for Server發(fā)布為GIS服務(wù),依據(jù)目錄結(jié)構(gòu)式組織GIS服務(wù)由URL訪問(wèn)[5]。
通過(guò)上述技術(shù)手段,ArcGIS for Server實(shí)現(xiàn)了云計(jì)算的兩個(gè)重要目標(biāo):可擴(kuò)展性和高可用性??蓴U(kuò)展性是指云計(jì)算可以將GIS Server實(shí)時(shí)加入到大規(guī)模的集群中,以滿足若干個(gè)節(jié)點(diǎn)同時(shí)處理一個(gè)計(jì)算任務(wù)的需要,提高了云計(jì)算平臺(tái)的處理能力;高可用性是指GIS Server能容忍節(jié)點(diǎn)的錯(cuò)誤,即使一部分節(jié)點(diǎn)發(fā)生失效,放棄這些節(jié)點(diǎn),將任務(wù)再分配給其他節(jié)點(diǎn),也不會(huì)影響GIS云計(jì)算應(yīng)用的正確運(yùn)行,可以提高分布式存儲(chǔ)的容錯(cuò)性。
為了節(jié)約開發(fā)成本,ESRI選擇開源Apache Geronimo框架構(gòu)建GIS Server。Apache Geronimo是遵循J2EE(Java 2 platform Enterprise Edition)規(guī)范的Web應(yīng)用服務(wù)器。J2EE應(yīng)用服務(wù)器采用多層分布式應(yīng)用模型框架結(jié)構(gòu),包括Presentation tier展示層、Business tier業(yè)務(wù)層和Data tier數(shù)據(jù)層[6],如圖1所示。其中業(yè)務(wù)層的Web container(Web容器)、EJB container(EJB容器)和J2EE services(J2EE服務(wù))構(gòu)成J2EE應(yīng)用服務(wù)器。Web容器負(fù)責(zé)為部署在其中的Web組件(JSP、Servlet等)提供運(yùn)行支持,處理用戶的Web請(qǐng)求,再將請(qǐng)求轉(zhuǎn)發(fā)給EJB容器;EJB容器負(fù)責(zé)管理EJB組件(Enterprise Beans),處理業(yè)務(wù)邏輯并與數(shù)據(jù)層進(jìn)行交互。
圖1 J2EE應(yīng)用服務(wù)器架構(gòu)
ApacheGeronimo是一款開源的J2EE應(yīng)用服務(wù)器平臺(tái),它的核心是Geronimo Kernel內(nèi)核和Geronimo Bean(即GBean)框架[7]。Apache Geronimo框架構(gòu)成一個(gè)基礎(chǔ)設(shè)施平臺(tái),只提供諸如事務(wù)、安全、日志、命名、遠(yuǎn)程控制之類的系統(tǒng)服務(wù),以形成特定的應(yīng)用程序環(huán)境。Geronimo自身不提供任何J2EE服務(wù),它主要是通過(guò)GBean集成Tomcat、OpenEJB、ActiveMQ等第三方組件來(lái)提供對(duì)符合J2EE規(guī)范構(gòu)造的服務(wù)器支持[8]。
Geronimo Plugin插件通過(guò)GBean將第三方組件包集成于Geronimo Kernel內(nèi)核。GBean是Geronimo框架的基石。它是一個(gè)Apache Geronimo可重用組件,運(yùn)行在Geronimo Kernel內(nèi)核中。GBean有兩個(gè)重要角色:一個(gè)是適配器,另一個(gè)是代理器。第一,GBean具有適配器的作用。它在GBean中封裝第三方組件的創(chuàng)建和啟動(dòng)邏輯,用戶只需要借助XML向GBean傳遞第三方組件的設(shè)置參數(shù)即可。第二,GBean具有代理器的作用。它在GBean中封裝第三方組件的實(shí)現(xiàn)過(guò)程,并由GBean負(fù)責(zé)組件之間的消息傳遞,用戶只需要調(diào)用相應(yīng)的GBean實(shí)例即可。
1.1 Apache Tomcat結(jié)構(gòu)
Apache Tomcat是一個(gè)廣泛應(yīng)用的開源Web服務(wù)器[9]。它是Servlet/JSP標(biāo)準(zhǔn)的具體實(shí)現(xiàn),專門負(fù)責(zé)處理HTTP請(qǐng)求。Tomcat體系結(jié)構(gòu)如圖2所示。
圖2 Tomcat服務(wù)器體系結(jié)構(gòu)
一個(gè)Tomcat服務(wù)器可以運(yùn)行多個(gè)Host虛擬主機(jī)。每個(gè)Host主機(jī)可以配置多個(gè)域名,對(duì)應(yīng)相同或不同的應(yīng)用。服務(wù)器根據(jù)客戶端發(fā)送的域名來(lái)確定處理的Host主機(jī)。一個(gè)Host主機(jī)又可以部署多個(gè)Web應(yīng)用。每個(gè)應(yīng)用提供對(duì)自身的生命周期管理等。
Connector組件負(fù)責(zé)接收用戶請(qǐng)求。當(dāng)Connector組件接收到客戶端Web請(qǐng)求時(shí),按照用戶請(qǐng)求的內(nèi)容解譯出Host主機(jī)名,然后映射到相應(yīng)的Host主機(jī),再由Host主機(jī)做簡(jiǎn)單的業(yè)務(wù)處理,將請(qǐng)求轉(zhuǎn)發(fā)給EJB服務(wù)器。如上所述,GBean是適配器,它為每種Tomcat支持的Connector組件定義一個(gè)GBean。
1.2 Apache OpenEJB結(jié)構(gòu)
EJB(Enterprise JavaBean)服務(wù)器是J2EE應(yīng)用服務(wù)器的最重要組成部分,它將功能性服務(wù)和非功能性服務(wù)分離[10]。組件只封裝業(yè)務(wù)邏輯功能,組件容器為組件提供如事務(wù)、安全、并發(fā)控制等非功能性服務(wù),所以組件容器是EJB服務(wù)器的核心。它在運(yùn)行期間創(chuàng)建和管理組件實(shí)例,自動(dòng)為組件分配系統(tǒng)資源,維護(hù)組件之間的交互,透明地?cái)r截客戶請(qǐng)求。
EJB服務(wù)器采用基于組件的分布式計(jì)算架構(gòu)[11],如圖3所示。
這是一個(gè)典型的EJB服務(wù)器結(jié)構(gòu),包括EJB Server、EJB Container和EJB三個(gè)關(guān)鍵模塊,其中EJB是基于事務(wù)的分布式企業(yè)級(jí)應(yīng)用程序組件。EJB服務(wù)器的特點(diǎn)是:
(1)EJB只包含業(yè)務(wù)邏輯功能;
(2)EJB實(shí)例由EJB Container動(dòng)態(tài)生成且管理;
(3)由EJB Container負(fù)責(zé)提供EJB非功能性服務(wù),如安全、事務(wù)管理等;
(4)EJB服務(wù)與非功能性服務(wù)的實(shí)現(xiàn)分離;
(5)EJB具有可移植性,即能用已有的EJB構(gòu)造新的應(yīng)用程序,且該程序能在任何J2EE兼容的服務(wù)器上運(yùn)行。
1.3 Web服務(wù)器集群
在J2EE架構(gòu)中,Web服務(wù)器集群是一組相互聯(lián)系且高度緊密協(xié)同工作的Web應(yīng)用服務(wù)器實(shí)例,負(fù)責(zé)提供均衡、透明的企業(yè)級(jí)服務(wù)[12]。一般來(lái)說(shuō),Web服務(wù)器集群是由一臺(tái)前端調(diào)度器和多臺(tái)后端節(jié)點(diǎn)服務(wù)器組成,通過(guò)將用戶請(qǐng)求按特定的分發(fā)策略由前端調(diào)度器重定向到不同的后端節(jié)點(diǎn)服務(wù)器以達(dá)到資源分配的目的[13]。前端調(diào)度器是GIS Server集群的核心,它在客戶端與GIS Server之間建立起TCP連接。每個(gè)服務(wù)器集群對(duì)應(yīng)一個(gè)GIS應(yīng)用,每個(gè)集群包括1個(gè)前端調(diào)度器和一個(gè)以上無(wú)狀態(tài)的GIS Server實(shí)例。通常,應(yīng)用相關(guān)狀態(tài)采用分布式緩存進(jìn)行維護(hù),應(yīng)用服務(wù)器實(shí)例故障不會(huì)影響應(yīng)用可用性[14]。
Web服務(wù)器集群具有可擴(kuò)展性和高可用性兩個(gè)特點(diǎn)[3]。可擴(kuò)展性通過(guò)增加Web服務(wù)器以提高額外工作能力來(lái)實(shí)現(xiàn),而高可用性通過(guò)冗余節(jié)點(diǎn)以減少故障或失效來(lái)保證。Web服務(wù)器集群這兩個(gè)特點(diǎn)建立在負(fù)載均衡和故障轉(zhuǎn)移兩個(gè)云計(jì)算關(guān)鍵技術(shù)的基礎(chǔ)上[15]。負(fù)載均衡是指當(dāng)大量用戶同時(shí)訪問(wèn)GIS應(yīng)用時(shí),GIS云計(jì)算平臺(tái)可以采用專門的調(diào)度算法將負(fù)載均衡地分配給不同的GIS應(yīng)用服務(wù)器處理。故障轉(zhuǎn)移意味著高可用性,它利用了集群節(jié)點(diǎn)間狀態(tài)復(fù)制和故障檢測(cè)技術(shù)來(lái)實(shí)現(xiàn)。
J2EE應(yīng)用服務(wù)器集群架構(gòu)一般分為兩類:配置結(jié)構(gòu)式集群和分離結(jié)構(gòu)式集群[16]。配置結(jié)構(gòu)式集群是在集群的每個(gè)應(yīng)用服務(wù)器中部署同樣的組件,Web容器和EJB容器在同一臺(tái)應(yīng)用服務(wù)器。分離結(jié)構(gòu)式集群是將Web容器和EJB容器分離,各自部署在不同的應(yīng)用服務(wù)器。ArcGIS應(yīng)用服務(wù)器集群屬于分離結(jié)構(gòu)式集群架構(gòu),前端調(diào)度器和GIS Server各自部署在不同的應(yīng)用服務(wù)器中。它是整個(gè)云計(jì)算平臺(tái)的核心,主要負(fù)責(zé)地圖生成和發(fā)布、投影、地理處理建模等專業(yè)GIS應(yīng)用[17]。
2.1 ArcGIS Server Site解析
在Site-GIS Servers框架體系中,ArcGIS Server Site是ArcGIS云計(jì)算框架的基礎(chǔ)組件。從云計(jì)算技術(shù)視角來(lái)看,ArcGIS Server Site是一個(gè)獨(dú)立完整的J2EE應(yīng)用服務(wù)器集群,提供動(dòng)態(tài)定制、配置、伸縮以及更新集群節(jié)點(diǎn)的功能,用于實(shí)現(xiàn)GIS任務(wù)的大規(guī)模并行處理。從架構(gòu)的角度看,ArcGIS Server Site主要由3個(gè)組件容器組成:Web Server、Web Adaptor和GIS Server。其中Web Server容器用于接收GIS服務(wù)請(qǐng)求,Web Adaptor容器用于轉(zhuǎn)發(fā)GIS服務(wù)請(qǐng)求,GIS Server容器用于處理GIS服務(wù)請(qǐng)求[18]。
ArcGIS for Server 10.1及以后的版本同10.0版本相比,最大的變化在于GIS Server框架體系。在之前的版本中,GIS Server采用集中式控制框架體系來(lái)建立,它分為SOM和SOC兩個(gè)部分:SOM負(fù)責(zé)管理和分發(fā)用戶請(qǐng)求,SOC負(fù)責(zé)執(zhí)行用戶請(qǐng)求[19]。而在新版本中,它基于P2P架構(gòu)設(shè)計(jì),SOM和SOC的功能統(tǒng)一合并至GIS Server,不再區(qū)分SOM和SOC,不存在主次計(jì)算節(jié)點(diǎn),每個(gè)GIS Server既可以分發(fā)用戶請(qǐng)求,也可以處理用戶請(qǐng)求,實(shí)現(xiàn)計(jì)算節(jié)點(diǎn)的完全對(duì)等[20]。這種框架能保證ArcGIS for Server具有云計(jì)算可擴(kuò)展性和高可用性的特點(diǎn)。
另外,Geospatial EJB采用多層分布式應(yīng)用模型架構(gòu),如圖4所示,包括Client層、EJB層和EIS層。
圖4 ArcGIS Server Geospatial EJB框架結(jié)構(gòu)
由圖4可知,Geospatial EJB調(diào)用過(guò)程是:
(1)ArcGIS EJB客戶端使用lookup方法查找JNDI(Java Naming and Directory Interface)名字服務(wù);
(2)客戶端根據(jù)匹配的lookup查詢內(nèi)容生成EJB Home實(shí)例;
(3)客戶端調(diào)用該EJB Home實(shí)例創(chuàng)建EJB Object,再調(diào)用該實(shí)例生成Remote Object實(shí)例以及ArcGIS EJB實(shí)例;
(4)客戶端通過(guò)與EJB Object交互,利用Remote接口向Server發(fā)起請(qǐng)求,由Resource Adapter溝通EJB層與EIS層,從而使客戶端調(diào)用ArcObject組件。
2.2 ArcGIS Server可擴(kuò)展性
可擴(kuò)展性用于度量輸出計(jì)算結(jié)果隨投入的計(jì)算資源變化的關(guān)系[21]。一般認(rèn)為,如果輸入的計(jì)算資源增加,則輸出的計(jì)算結(jié)果也相應(yīng)增加,系統(tǒng)就具有較高的可擴(kuò)展性??蓴U(kuò)展性不僅能夠使系統(tǒng)通過(guò)計(jì)算資源的自動(dòng)伸縮來(lái)應(yīng)對(duì)高并發(fā)的用戶請(qǐng)求,而且也能通過(guò)調(diào)整單個(gè)服務(wù)的計(jì)算能力,充分利用硬件資源。一個(gè)不具備可擴(kuò)展性的GIS應(yīng)用,即使建立在云計(jì)算平臺(tái)上也很難具有可擴(kuò)展性;一個(gè)具有可擴(kuò)展性的GIS應(yīng)用,可以借助云計(jì)算平臺(tái)更加方便、快速地調(diào)度計(jì)算資源來(lái)適應(yīng)服務(wù)的增減,具有較高的計(jì)算效率[22]。
ArcGIS Server應(yīng)用服務(wù)器具有充分的可擴(kuò)展性。它被部署在云計(jì)算平臺(tái)上,可以利用云計(jì)算高彈性的特點(diǎn),靈活地增減計(jì)算資源。特別是,ArcGIS Server Site可以利用它構(gòu)建GIS Server集群。實(shí)際上,GIS Server集群就是一組安裝了ArcGIS Server的虛擬機(jī)/物理機(jī),它們可以作為一個(gè)整體共同對(duì)外提供GIS服務(wù),組成集群的每臺(tái)計(jì)算機(jī)稱為GIS計(jì)算節(jié)點(diǎn),一個(gè)ArcGIS Server Site可以包含一個(gè)或多個(gè)集群,一個(gè)集群可以包含一個(gè)或多個(gè)節(jié)點(diǎn)[23]。使用GIS Server集群能夠快速地增加或刪除GIS計(jì)算節(jié)點(diǎn),因此將GIS Server構(gòu)建成集群是具備可擴(kuò)展性的基礎(chǔ)。
在具有可擴(kuò)展性的GIS應(yīng)用中,通過(guò)負(fù)載均衡和自動(dòng)伸縮來(lái)保證GIS應(yīng)用運(yùn)行達(dá)到最佳性能。對(duì)于ArcGIS Server Site來(lái)說(shuō),負(fù)載均衡是指將接收到的GIS服務(wù)請(qǐng)求均衡地分發(fā)給集群中各GIS節(jié)點(diǎn);自動(dòng)伸縮是指依據(jù)系統(tǒng)當(dāng)前的負(fù)載,自動(dòng)增加或減少GIS計(jì)算節(jié)點(diǎn)[24]。兩者實(shí)現(xiàn)的前提是對(duì)GIS Server進(jìn)行有效監(jiān)控。在云計(jì)算平臺(tái)中,主要是監(jiān)控虛擬機(jī)的CPU、內(nèi)存以及存儲(chǔ)、網(wǎng)絡(luò)等資源,并提供統(tǒng)計(jì)、查詢、預(yù)測(cè)和預(yù)警等接口[25]。
負(fù)載均衡的目的是將服務(wù)請(qǐng)求均衡地分發(fā)給一組GIS Server應(yīng)用服務(wù)器,充分利用所有GIS Server的處理能力,以獲取更短的GIS服務(wù)響應(yīng)時(shí)間[26]。當(dāng)接收到需要使用GIS服務(wù)的請(qǐng)求時(shí),Web Server將日志記錄在服務(wù)器站點(diǎn)中,日志內(nèi)容包括哪些服務(wù)器處于空閑狀態(tài),哪些處于忙碌狀態(tài),這些日志為負(fù)載均衡提供數(shù)據(jù)支持[27]。負(fù)載均衡功能可以由以下組件之一來(lái)實(shí)現(xiàn)[18]:ArcGIS Server的Web Adaptor組件;反向代理服務(wù)器,如Apache Server、Nginx等;專業(yè)負(fù)載均衡軟件,如LVS、Pound等。
負(fù)載均衡的模式有以下幾種:
(1)集群節(jié)點(diǎn)數(shù)較少的單集群模式。選用Web Adaptor作為負(fù)載均衡組件,由其直接連接GIS Server集群。Web Adaptor采用輪詢算法,將請(qǐng)求轉(zhuǎn)發(fā)給集群中的GIS Server[18]。
(2)集群節(jié)點(diǎn)數(shù)較多的單集群模式。選用反向代理服務(wù)器或?qū)I(yè)的負(fù)載均衡軟件作為負(fù)載均衡組件,根據(jù)日志記錄中集群的當(dāng)前負(fù)載狀態(tài),將服務(wù)請(qǐng)求轉(zhuǎn)發(fā)給負(fù)載較低的GIS Server。這樣結(jié)構(gòu)更具靈活性,可以考慮更多的自定義算法和條件,如加權(quán)輪詢算法、動(dòng)態(tài)輪詢算法[28]。
(3)多集群模式。在每個(gè)集群內(nèi)進(jìn)行負(fù)載均衡,選擇Web Adaptor與其他負(fù)載均衡組件相結(jié)合的方式,進(jìn)行兩層式負(fù)載均衡,即集群間負(fù)載均衡與集群內(nèi)負(fù)載均衡。
三種ArcGIS Server負(fù)載均衡模式如圖5所示[29]。
圖5 三種ArcGIS Server負(fù)載均衡模式
動(dòng)態(tài)擴(kuò)展的目的是將集群的伸縮自動(dòng)化,節(jié)省服務(wù)資源管理的成本。動(dòng)態(tài)擴(kuò)展需要實(shí)時(shí)監(jiān)聽GIS Server集群的負(fù)載情況,并設(shè)定觸發(fā)條件與相應(yīng)的擴(kuò)展操作,以便于達(dá)到條件時(shí)自動(dòng)進(jìn)行擴(kuò)展操作[22]。觸發(fā)條件通常是監(jiān)聽基于時(shí)間段的統(tǒng)計(jì)數(shù)據(jù),例如CPU利用率達(dá)到閾值且持續(xù)一定的時(shí)間[30]。動(dòng)態(tài)擴(kuò)展的過(guò)程是:運(yùn)行在云計(jì)算平臺(tái)上的監(jiān)控程序,周期性地查詢計(jì)算節(jié)點(diǎn)CPU、內(nèi)存等資源的性能,并根據(jù)設(shè)定的觸發(fā)條件進(jìn)行統(tǒng)計(jì);當(dāng)結(jié)果達(dá)到閾值時(shí),向擴(kuò)展程序傳遞相應(yīng)的信號(hào);擴(kuò)展程序隨即實(shí)施增加或刪除節(jié)點(diǎn)的操作,以完成一次動(dòng)態(tài)擴(kuò)展[31]。
2.3 ArcGIS Server高可用性
在云計(jì)算平臺(tái)上,無(wú)法時(shí)刻保持每個(gè)節(jié)點(diǎn)持續(xù)有效。當(dāng)一個(gè)節(jié)點(diǎn)出現(xiàn)故障時(shí),如果該節(jié)點(diǎn)沒(méi)有其他多余的節(jié)點(diǎn)來(lái)替代的話,這種現(xiàn)象被稱為單點(diǎn)失效[32]。單點(diǎn)失效現(xiàn)象的發(fā)生是無(wú)法避免的,只能做到盡量減少它的發(fā)生概率[33]。為此,在關(guān)鍵節(jié)點(diǎn)上要保持一定的冗余??梢酝ㄟ^(guò)構(gòu)建高容錯(cuò)性和高可用性集群或者平均分配流量的負(fù)載均衡集群兩種方法來(lái)實(shí)現(xiàn)系統(tǒng)的高可用性[34]。ArcGIS Server Site包含若干個(gè)集群,可以通過(guò)對(duì)站點(diǎn)結(jié)構(gòu)的分析選擇在站點(diǎn)內(nèi)或站點(diǎn)間提高容錯(cuò)率,使得云計(jì)算平臺(tái)更容易維護(hù)[35]。
在ArcGIS Server Site中,Web Server、Web Adaptor和GIS Server三個(gè)組件都可以進(jìn)行高可用部署。
當(dāng)ArcGIS Server Site中節(jié)點(diǎn)較少時(shí),為了實(shí)現(xiàn)GIS站點(diǎn)間的高可用部署,可同時(shí)架設(shè)兩個(gè)ArcGIS Server Site,可以選擇以下任一方法來(lái)實(shí)現(xiàn)[36]:
(1)主備切換方案。構(gòu)建兩個(gè)GIS站點(diǎn),一個(gè)作為主站點(diǎn),另一個(gè)作為備用站點(diǎn)。故障監(jiān)控交由站點(diǎn)外的監(jiān)控程序來(lái)完成,當(dāng)網(wǎng)絡(luò)故障或GIS服務(wù)發(fā)生故障時(shí),發(fā)出故障信號(hào),主站點(diǎn)自動(dòng)切換至備用站點(diǎn)。
(2)在GIS站點(diǎn)間架設(shè)負(fù)載均衡組件。兩個(gè)站點(diǎn)同時(shí)對(duì)外提供服務(wù),由負(fù)載均衡組件采用輪詢等算法分配GIS站點(diǎn)。同時(shí)進(jìn)行健康檢查,只將GIS服務(wù)的請(qǐng)求分發(fā)給能正常工作的站點(diǎn)。
GIS站點(diǎn)間的高可用部署如圖6(1)和(2)所示。
當(dāng)ArcGIS Server Site內(nèi)節(jié)點(diǎn)較多時(shí),可以考慮站點(diǎn)內(nèi)的高可用部署[29]。該過(guò)程的實(shí)施分為兩個(gè)部分:
(1)對(duì)Web Server和Web Adaptor來(lái)說(shuō),通常采用主備切換方案。部署時(shí),選擇一個(gè)服務(wù)器節(jié)點(diǎn)作為主服務(wù)器,并追加一個(gè)備用服務(wù)器節(jié)點(diǎn),通過(guò)監(jiān)控程序不斷進(jìn)行健康檢查[37]。一旦主服務(wù)器被檢測(cè)到發(fā)生故障,則自動(dòng)切換至備用服務(wù)器繼續(xù)工作,同時(shí)對(duì)主服務(wù)器進(jìn)行災(zāi)難恢復(fù)。
(2)對(duì)GIS Server來(lái)說(shuō),確保GIS Server集群中的計(jì)算節(jié)點(diǎn)不少于兩個(gè)。一般由負(fù)載均衡組件進(jìn)行健康檢查,將GIS服務(wù)請(qǐng)求分發(fā)給健康的GIS節(jié)點(diǎn),而當(dāng)GIS節(jié)點(diǎn)發(fā)生故障時(shí),通過(guò)動(dòng)態(tài)擴(kuò)展自動(dòng)增加新的節(jié)點(diǎn),刪除發(fā)生故障的節(jié)點(diǎn),從而保證GIS云平臺(tái)的高可用性。
ArcGIS Server Site內(nèi)的高可用部署如圖6(3)所示[29]。
圖6 ArcGIS Server站點(diǎn)高可用部署
云計(jì)算技術(shù)為ArcGIS for Server提供了具有可擴(kuò)展性、高可用性的GIS服務(wù)資源。利用該技術(shù),基于ArcGIS for Server的GIS應(yīng)用可動(dòng)態(tài)擴(kuò)展。同時(shí)通過(guò)構(gòu)建GIS Server集群,使GIS應(yīng)用能按需提供GIS服務(wù)資源,并從容應(yīng)對(duì)服務(wù)需求量的變化。在進(jìn)行大數(shù)據(jù)量、復(fù)雜繁瑣的GIS服務(wù)處理時(shí),能動(dòng)態(tài)增加GIS站點(diǎn)以達(dá)到快速響應(yīng)GIS服務(wù)的目的;而在服務(wù)請(qǐng)求減少時(shí),能自動(dòng)縮減GIS節(jié)點(diǎn)以達(dá)到節(jié)省計(jì)算資源的目的。在不同規(guī)模的站點(diǎn)條件下,通過(guò)保持Web Server、GIS Server或GIS站點(diǎn)的適度冗余,利用云計(jì)算快速調(diào)度資源的能力,可以在短時(shí)間內(nèi)進(jìn)行GIS節(jié)點(diǎn)的切換或修復(fù),提升GIS應(yīng)用的容錯(cuò)率,從而保證了GIS服務(wù)的可用性。
[1] 林德根,梁勤歐.云GIS的內(nèi)涵與研究進(jìn)展[J].地理科學(xué)進(jìn)展,2012,31(11):1519-1528.
[2] Mell P,Grance T.The NIST definition of cloud computing[J].Communications of the ACM,2010,53(6):50.
[3] 陳 康,鄭緯民.云計(jì)算:系統(tǒng)實(shí)例與研究現(xiàn)狀[J].軟件學(xué)報(bào),2009,20(5):1337-1348.
[4] 熊錦華,虎嵩林,劉 暉.云計(jì)算中的按需服務(wù)[J].中興通訊技術(shù),2010(4):13-17.
[5] 甄福全.基于公有云平臺(tái)Arcgis Online的WebGIS實(shí)現(xiàn)[J].哈爾濱師范大學(xué)自然科學(xué)學(xué)報(bào),2015,31(3):75-78.
[6] 林 泊,周明輝,劉天成,等.一個(gè)J2EE應(yīng)用服務(wù)器的Web容器集成框架[J].軟件學(xué)報(bào),2006,17(5):1195-1203.
[7] Geronimo的遠(yuǎn)大前程[J].程序員,2005(11):27-28.
[8] Geronimo整合系列之Tomcat[EB/OL].2010-01-28.http://www.ibm.com/developerworks/cn/opensource/os-cn-geronimo-tomcat/index.html.
[9] Apache Foundations. The apache tomcat project[EB/OL].2006.http://jakarta.apache.org/tomcat/.
[10] 范國(guó)闖,魏 峻,鐘 華,等.支持EJB動(dòng)態(tài)分布的組件遷移模型與算法[J].軟件學(xué)報(bào),2004,15(3):403-413.
[11] Roman E,Oberg R.The technical benefits of EJB and J2EE technologies over COM+ and Windows DNA[J/OL].1999-01-24.http://java.sun.com/products/ejb/pdf/j2ee_dnatwp.pdf.
[12] 郭成城,晏蒲柳.一種異構(gòu)Web服務(wù)器集群動(dòng)態(tài)負(fù)載均衡算法[J].計(jì)算機(jī)學(xué)報(bào),2005,28(2):179-184.
[13] 高 昂,慕德俊,胡延蘇.Web集群的區(qū)分服務(wù)與負(fù)載均衡策略研究[J].電子與信息學(xué)報(bào),2011,33(3):555-562.
[14] 趙 鑫,王 偉,張文博,等.共享式Web應(yīng)用服務(wù)器集群的資源整合方法研究[J].計(jì)算機(jī)科學(xué)與探索,2013,7(1):25-34.
[15] Buyya R.High performance cluster computing:architectures and systems(volume 1)[M].Upper Saddle River,NJ,USA:Prentice Hall,1999.
[16] 吳少剛,陳曉玲.J2EE應(yīng)用服務(wù)器集群性能研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(18):4410-4412.
[17] 王鳳領(lǐng).基于云計(jì)算的WebGIS分析構(gòu)架研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(3):113-116.
[18] ArcGIS Server站點(diǎn)的內(nèi)部[EB/OL].2016-11-28.http://server.arcgis.com/zh-cn/server/latest/administer/windows/inside-an-arcgis-server-site.htm.
[19] 劉曉慧,劉永偉,劉 永.ArcGIS Server分布式體系結(jié)構(gòu)研究與服務(wù)器部署策略[J].測(cè)繪科學(xué),2011,36(4):205-207.
[20] Tiemens G.Hands-on experiences:migration to ArcGIS for server 10.1[M].[s.l.]:[s.n.],2012.
[21] 范協(xié)裕,任應(yīng)超,楊崇俊,等.基于集群技術(shù)的可伸縮云GIS服務(wù)平臺(tái)研究[J].計(jì)算機(jī)應(yīng)用研究,2012,29(10):3736-3739.
[22] 林允博.AWS云端企業(yè)實(shí)戰(zhàn)圣經(jīng):亞馬遜如何構(gòu)造云端計(jì)算[M].北京:清華大學(xué)出版社,2012:184-186.
[23] Components of ArcGIS for server[EB/OL].2015.http://resources.arcgis.com/en/help/main/10.2/index.html#/na/01540000035p000000/.
[24] Fan X,Wu S,Ren Y,et al.An approach to providing cloud GIS services based on scalable cluster[C]//21st international conference on geoinformatics.[s.l.]:IEEE,2013:1-4.
[25] 侯永東.虛擬化云平臺(tái)監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[D].北京:北方工業(yè)大學(xué),2014.
[26] 黃 穎,郭明強(qiáng),羅顯剛,等.WebGIS中GIS服務(wù)器負(fù)載均衡研究與實(shí)現(xiàn)[J].測(cè)繪科學(xué),2009,34(1):182-183.
[27] Nasser H.Administering ArcGIS for server[M].[s.l.]:Packt Publishing,2014:150-153.
[28] 楊明極,王 鶴,趙加鳳.基于CPU和內(nèi)存利用率的負(fù)載均衡算法的研究[J].科技通報(bào),2016,32(4):160-164.
[29] ArcGIS Server多機(jī)站點(diǎn)配置[EB/OL].2016.http://server.arcgis.com/zh-cn/server/latest/administer/windows/multiple-machine-deployment-with-arcgis-web-adaptor.htm.
[30] 曹全龍,唐 權(quán),楊程瑤.基于ArcGIS的云GIS平臺(tái)設(shè)計(jì)方案研究[J].測(cè)繪與空間地理信息,2014,37(10):36-38.
[31] Song W W,Jin B X,Li S H,et al.Building spatiotemporal cloud platform for supporting GIS application[J].ISPRS Annals of the Photogrammetry,Remote Sensing and Spatial Information Sciences,2015,2(4):55.
[32] 林曉東,劉心松.高可用性系統(tǒng)結(jié)構(gòu)的研究[J].計(jì)算機(jī)應(yīng)用,1997,17(4):15-18.
[33] 羅軍舟,金嘉暉,宋愛波,等.云計(jì)算:體系架構(gòu)與關(guān)鍵技術(shù)[J].通信學(xué)報(bào),2011,32(7):3-21.
[34] 王良清.集群和負(fù)載均衡技術(shù)在GIS數(shù)據(jù)中心的應(yīng)用研究[J].測(cè)繪通報(bào),2013(8):74-76.
[35] 陳 波,張曦煌.基于分層與容錯(cuò)機(jī)制的云計(jì)算負(fù)載均衡策略[J].計(jì)算機(jī)應(yīng)用,2013,33(11):3155-3159.
[36] ArcGIS Server單機(jī)高可用性(主動(dòng)-被動(dòng))部署[EB/OL].2016.http://server.arcgis.com/zh-cn/server/latest/administer/windows/single-machine-high-availability-active-passive-deployment.htm.
[37] 侯超平,李春锃.云計(jì)算的高可用性實(shí)現(xiàn)技術(shù)探討[J].山東工業(yè)技術(shù),2016(2):269-270.
Investigation on Architecture of a GIS Cloud Computing Instance
CHEN Gang-rui,GE Ying,ASKAR Ablimit,ZHAO Hui-hui
(School of Earth Science and Engineering,Hohai University,Nanjing 211100,China)
Cloud Computing has the reliable,available and scalable characteristics,which can rapidly allocate cloud service resources and provide elastic and on-demand GIS services.The infrastructure of a typical GIS Cloud Computing Instance has been analyzed.The technical principle of the Web Application Servers has been presented.The offered functionality of each component container in Cloud Computing has been revealed.Furthermore,in terms of the characters of high availability and scalability,the technologies of GIS Cloud Computing Instance have been specifically discussed.How Cloud Computing provides the adaptive computing resources and controls the fault tolerance of this system instance for GIS services through the load balancing and dynamic scalability has been surveyed.Cloud Computing enables GIS applications to maintain sustainability of its high performance and high resource utilization once the number of users and the use of geospatial data increase.Therefore by means of the technology of Cloud Computing GIS services can automatically obtain elastic computing resources and build efficient and stable GIS applications.
GIS Cloud Computing Instance;ArcGIS Server Application Servers;scalability;high availability
2016-07-13
2016-11-04 網(wǎng)絡(luò)出版時(shí)間:2017-04-28
國(guó)家自然科學(xué)基金資助項(xiàng)目(41071347);云南省重大科技專項(xiàng)—新能源(2013ZB006);衛(wèi)星測(cè)繪技術(shù)與應(yīng)用國(guó)家測(cè)繪地理信息局重點(diǎn)實(shí)驗(yàn)室課題(KLSMTA-201509)
陳剛銳(1991-),男,碩士研究生,研究方向?yàn)閃ebGIS;葛 瑩,博士,教授,通訊作者,研究方向?yàn)镚IS云計(jì)算、空間統(tǒng)計(jì)學(xué)、產(chǎn)業(yè)集聚等。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170428.1703.066.html
TP301
A
1673-629X(2017)06-0099-07
10.3969/j.issn.1673-629X.2017.06.021