本發(fā)明涉及GIS應(yīng)用技術(shù)領(lǐng)域,尤其涉及一種基于PaaS的GIS應(yīng)用部署方法及系統(tǒng)。
背景技術(shù):
PaaS(Platform-as-a-Service),平臺(tái)即服務(wù),是指把計(jì)算環(huán)境、開(kāi)發(fā)環(huán)境等平臺(tái)作為一種服務(wù)提供的商業(yè)模式。它是一種介于IaaS(Infrastructure-as-a-Service,基礎(chǔ)設(shè)施即服務(wù))和SaaS(Software-as-a-Service,應(yīng)用即服務(wù))之間的一種云計(jì)算模式。
傳統(tǒng)開(kāi)發(fā)部署一套GIS應(yīng)用系統(tǒng)通常是一個(gè)漫長(zhǎng)的過(guò)程。首先需要選定一個(gè)GIS平臺(tái)進(jìn)行GIS應(yīng)用開(kāi)發(fā);然后在測(cè)試環(huán)境中進(jìn)行測(cè)試;最后,當(dāng)GIS應(yīng)用系統(tǒng)需要上線的時(shí)候,還需要進(jìn)行硬件申請(qǐng)、購(gòu)買(mǎi)、運(yùn)輸、軟硬件的安裝與配置等過(guò)程。
傳統(tǒng)的GIS應(yīng)用的運(yùn)維模式主要存在以下幾個(gè)問(wèn)題:
無(wú)法應(yīng)對(duì)快速、多變的業(yè)務(wù)需求。開(kāi)發(fā)部署期間需要研發(fā)部、測(cè)試部、物資部、財(cái)務(wù)部、運(yùn)維部等多個(gè)部門(mén)相互協(xié)作才能夠順利完成。這將影響了系統(tǒng)發(fā)布周期,使得應(yīng)用的更新無(wú)法適應(yīng)業(yè)務(wù)需求變化的速度。
資源利用率低,維護(hù)成本高。在傳統(tǒng)的部署模式下,不同的GIS應(yīng)用系統(tǒng)不能共享硬件資源,測(cè)試環(huán)境和生產(chǎn)環(huán)境也無(wú)法共享硬件資源。當(dāng)迎來(lái)業(yè)務(wù)高峰的時(shí)候,只能通過(guò)購(gòu)買(mǎi)新的服務(wù)器資源來(lái)擴(kuò)展系統(tǒng)能力,但是當(dāng)過(guò)了業(yè)務(wù)高峰以后,又會(huì)造成許多服務(wù)器被閑置,資源的利用率低。同時(shí)又會(huì)為企業(yè)帶來(lái)額外的供電、冷卻等方面的費(fèi)用支出。
手工部署系統(tǒng),效率低?,F(xiàn)有系統(tǒng)通常是分布式系統(tǒng),因此需要為每臺(tái)服務(wù)器重復(fù)安裝與配置軟硬件資源。這是一項(xiàng)繁重的工作,費(fèi)時(shí)費(fèi)力,大量的重復(fù)人工配置工作,極易導(dǎo)致部署的失敗。
系統(tǒng)部署困難。在傳統(tǒng)的開(kāi)發(fā)模式下,GIS應(yīng)用系統(tǒng)的研發(fā)環(huán)境、測(cè)試環(huán)境和生產(chǎn)環(huán)境不盡相同。運(yùn)維人員按照研發(fā)人員編寫(xiě)的部署手冊(cè)一步步進(jìn)行系統(tǒng)部署,但是由于研發(fā)環(huán)境和生產(chǎn)環(huán)境的差異,可能導(dǎo)致部署手冊(cè)無(wú)效,而無(wú)法在生產(chǎn)環(huán)境中進(jìn)行部署。
系統(tǒng)監(jiān)控困難,在生產(chǎn)環(huán)境下難以跟蹤定位問(wèn)題。在分布式環(huán)境下,當(dāng)系統(tǒng)遇到問(wèn)題的時(shí)候,運(yùn)維人員需要分別登錄不同的服務(wù)器下載系統(tǒng)日志,然后交予研發(fā)人員,研發(fā)人員面對(duì)海量離散的日志,采用人工的方式搜索日志進(jìn)行問(wèn)題定位,這種運(yùn)維方式很難有效而準(zhǔn)確地定位到系統(tǒng)問(wèn)題發(fā)生的位置和產(chǎn)生的原因。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是:提供一種能夠快速部署GIS應(yīng)用的基于PaaS的GIS應(yīng)用部署方法及系統(tǒng)。
為了解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案為:一種基于PaaS的GIS應(yīng)用部署方法,包括:
創(chuàng)建GIS應(yīng)用的實(shí)例,申請(qǐng)GIS應(yīng)用的實(shí)例所需硬件資源;
為GIS應(yīng)用的實(shí)例分配硬件資源,啟動(dòng)指定數(shù)量的容器;
在所述容器自動(dòng)鏡像部署所述GIS應(yīng)用的實(shí)例;
將啟動(dòng)的GIS應(yīng)用的實(shí)例的地址注冊(cè)到智能路由器中。
本發(fā)明還涉及一種基于PaaS的GIS應(yīng)用部署系統(tǒng),包括:
創(chuàng)建模塊,用于創(chuàng)建GIS應(yīng)用的實(shí)例;
申請(qǐng)模塊,用于申請(qǐng)GIS應(yīng)用的實(shí)例所需的硬件資源;
分配模塊,用于分配硬件資源;
啟動(dòng)模塊,用于啟動(dòng)容器;
部署模塊,用于鏡像部署所述GIS應(yīng)用的實(shí)例;
注冊(cè)模塊,用于將啟動(dòng)的實(shí)例的地址注冊(cè)到智能路由器中。
本發(fā)明的有益效果在于:在分配的指定容器中自動(dòng)部署GIS應(yīng)用的實(shí)例,避免了繁重的手工部署的缺陷,部署效率高,并且部署成功率高,業(yè)務(wù)通過(guò)智能路由器便可訪問(wèn)所有的GIS應(yīng)用,使用方便靈活。
附圖說(shuō)明
圖1為本發(fā)明基于PaaS的GIS應(yīng)用部署流程圖;
圖2為本發(fā)明實(shí)施例的基于PaaS的GIS應(yīng)用部署流程圖;
圖3為本發(fā)明實(shí)施例的基于PaaS的GIS應(yīng)用部署系統(tǒng)框圖;
標(biāo)號(hào)說(shuō)明:
1、創(chuàng)建模塊;2、申請(qǐng)模塊;3、分配模塊;4、啟動(dòng)模塊;5、部署模塊;6、注冊(cè)模塊。
具體實(shí)施方式
為詳細(xì)說(shuō)明本發(fā)明的技術(shù)內(nèi)容、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖予以說(shuō)明。
本發(fā)明最關(guān)鍵的構(gòu)思在于:在分配的指定容器中部署GIS應(yīng)用的實(shí)例,避免了繁重的手工部署的缺陷,部署效率高,并且部署成功率高。
請(qǐng)參照?qǐng)D1至圖3,一種基于PaaS的GIS應(yīng)用部署方法,包括:
創(chuàng)建GIS應(yīng)用的實(shí)例,申請(qǐng)GIS應(yīng)用的實(shí)例所需硬件資源;
為GIS應(yīng)用的實(shí)例分配硬件資源,啟動(dòng)指定數(shù)量的容器;
在所述容器自動(dòng)鏡像部署所述GIS應(yīng)用的實(shí)例;
將啟動(dòng)的GIS應(yīng)用的實(shí)例的地址注冊(cè)到智能路由器中。
從上述描述可知,本發(fā)明的有益效果在于:在分配的指定容器中部署GIS應(yīng)用的實(shí)例,避免了繁重的手工部署的缺陷,部署效率高,并且部署成功率高,業(yè)務(wù)通過(guò)智能路由器便可訪問(wèn)所有的GIS應(yīng)用,使用方便靈活。
進(jìn)一步的,生成并保存GIS應(yīng)用的鏡像文件。
進(jìn)一步的,獲取所述GIS應(yīng)用的鏡像文件,利用鏡像文件啟動(dòng)虛擬機(jī),并分配指定的資源,所述虛擬機(jī)采用容器隔離技術(shù)。
由上述描述可知,虛擬機(jī)采用容器隔離技術(shù),同一臺(tái)服務(wù)器上的不同虛擬機(jī)之間的資源是相互隔離的,即一個(gè)虛擬機(jī)不能訪問(wèn)另一個(gè)虛擬機(jī)的資源,其中一個(gè)虛擬機(jī)的崩潰也不會(huì)影響其他虛擬機(jī)的正常運(yùn)行。
進(jìn)一步的,周期性地檢測(cè)GIS應(yīng)用的實(shí)例是否正常運(yùn)行,若否,則關(guān)閉所述實(shí)例,并部署新的實(shí)例。
由上述描述可知,對(duì)GIS應(yīng)用進(jìn)行周期性地檢測(cè),可以保證GIS應(yīng)用正常運(yùn)行。
進(jìn)一步的,當(dāng)GIS應(yīng)用的性能負(fù)載過(guò)大時(shí),增加GIS應(yīng)用的實(shí)例數(shù)。
由上述描述可知,增加GIS應(yīng)用實(shí)例數(shù)可以多分配資源,減輕每一個(gè)GIS應(yīng)用實(shí)例的負(fù)擔(dān)。
進(jìn)一步的,當(dāng)GIS應(yīng)用的實(shí)例宕機(jī)時(shí),創(chuàng)建新的實(shí)例。
由上述描述可知,實(shí)例宕機(jī)時(shí)創(chuàng)建新的實(shí)例可以保障GIS應(yīng)用持續(xù)高可用地運(yùn)行。
進(jìn)一步的,當(dāng)升級(jí)GIS應(yīng)用時(shí),部署新的實(shí)例,所述新的實(shí)例啟動(dòng)成功后,關(guān)閉升級(jí)前的實(shí)例。
由上述描述可知,可實(shí)現(xiàn)GIS應(yīng)用不停機(jī)平滑升級(jí),保證其隨時(shí)正常運(yùn)行。
進(jìn)一步的,記錄并保存GIS應(yīng)用的相關(guān)日志。
由上述描述可知,將GIS應(yīng)用的相關(guān)日志進(jìn)行保存,方便后續(xù)進(jìn)行調(diào)用和查詢(xún)。
進(jìn)一步的,在創(chuàng)建GIS應(yīng)用的實(shí)例之前,還包括:
對(duì)GIS應(yīng)用進(jìn)行注冊(cè);
識(shí)別GIS應(yīng)用中的服務(wù)接口,并以協(xié)議的方式對(duì)GIS應(yīng)用進(jìn)行發(fā)布;
對(duì)發(fā)布的GIS應(yīng)用進(jìn)行測(cè)試;
對(duì)通過(guò)測(cè)試的所述GIS應(yīng)用進(jìn)行審核,并發(fā)布到生產(chǎn)環(huán)境中。
由上述描述可知,GIS應(yīng)用發(fā)布到生產(chǎn)環(huán)境之前需要先通過(guò)測(cè)試和審核,以保證GIS應(yīng)用的可靠性。
進(jìn)一步的,屬于同一云平臺(tái)的所有GIS應(yīng)用共享云平臺(tái)上的軟硬件資源。
由上述描述可知,GIS應(yīng)用共享軟硬件資源可以提高資源利用率,降低成本。
進(jìn)一步的,所述云平臺(tái)包括未注冊(cè)的第一GIS應(yīng)用和已注冊(cè)的第二GIS應(yīng)用,所述第一GIS應(yīng)用可調(diào)用第二GIS應(yīng)用的接口jar包。
由上述描述可知,其中GIS應(yīng)用之間是可以相互依賴(lài)的。
進(jìn)一步的,在對(duì)第一GIS應(yīng)用進(jìn)行單元測(cè)試時(shí),為第二GIS應(yīng)用接口創(chuàng)建遠(yuǎn)程代理對(duì)象,通過(guò)所述遠(yuǎn)程代理對(duì)象訪問(wèn)第二GIS應(yīng)用的實(shí)例,并將結(jié)果返回給第一GIS應(yīng)用。
由上述描述可知,在對(duì)第一GIS應(yīng)用進(jìn)行部署時(shí),第二GIS應(yīng)用實(shí)例的部署并不影響其測(cè)試。
進(jìn)一步的,當(dāng)?shù)谝籊IS應(yīng)用通過(guò)單元測(cè)試后,對(duì)所述第一GIS應(yīng)用進(jìn)行注冊(cè)。
一種基于PaaS的GIS應(yīng)用部署系統(tǒng),包括:
創(chuàng)建模塊,用于創(chuàng)建GIS應(yīng)用的實(shí)例;
申請(qǐng)模塊,用于申請(qǐng)GIS應(yīng)用的實(shí)例所需的硬件資源;
分配模塊,用于分配硬件資源;
啟動(dòng)模塊,用于啟動(dòng)容器;
部署模塊,用于鏡像部署所述GIS應(yīng)用的實(shí)例;
注冊(cè)模塊,用于將啟動(dòng)的實(shí)例的地址注冊(cè)到智能路由器中。
實(shí)施例
請(qǐng)參照?qǐng)D1至圖3,本發(fā)明的實(shí)施例一為:如圖1和圖2所示,一種基于PaaS的GIS應(yīng)用部署方法及系統(tǒng),包括如下內(nèi)容:
本實(shí)施例中,在對(duì)GIS應(yīng)用進(jìn)行部署的時(shí)候主要通過(guò)中央倉(cāng)庫(kù)、資源管理中心、云平臺(tái)、開(kāi)發(fā)框架/遠(yuǎn)程代理框架來(lái)實(shí)現(xiàn)。所述中央倉(cāng)庫(kù)主要是對(duì)GIS應(yīng)用進(jìn)行管理,包括站點(diǎn)管理、應(yīng)用管理、開(kāi)發(fā)商管理和租戶(hù)管理等;所述資源管理中心主要是對(duì)軟硬件資源進(jìn)行監(jiān)控,提供GIS應(yīng)用實(shí)例管理、服務(wù)器監(jiān)控、日志查詢(xún)、應(yīng)用性能分析等;所述云平臺(tái)主要用于為GIS應(yīng)用提供軟硬件資源,提供資源的動(dòng)態(tài)分配,資源隔離、智能路由、故障轉(zhuǎn)移、日志收集與分析、硬件資源監(jiān)控等;所述開(kāi)發(fā)框架/遠(yuǎn)程代理框架,主要是為GIS應(yīng)用提供技術(shù)支撐,開(kāi)發(fā)框架主要是提供無(wú)侵入式編程、多協(xié)議發(fā)布服務(wù)、參數(shù)校驗(yàn)、服務(wù)的自動(dòng)注冊(cè)預(yù)發(fā)布、參數(shù)配置組件、日志組件等功能,遠(yuǎn)程代理框架提供自動(dòng)生成代理、遠(yuǎn)程通訊、本地負(fù)載均衡、安全調(diào)用等功能。
首先對(duì)GIS應(yīng)用進(jìn)行注冊(cè);本實(shí)施例中,當(dāng)通過(guò)開(kāi)發(fā)框架對(duì)GIS應(yīng)用完成開(kāi)發(fā)后,將GIS應(yīng)用注冊(cè)到中央倉(cāng)庫(kù)中,所述GIS應(yīng)用由多個(gè)GIS服務(wù)組成,所述GIS服務(wù)主要包括接口和邏輯實(shí)現(xiàn)。
識(shí)別GIS應(yīng)用中的服務(wù)接口,并以協(xié)議的方式對(duì)GIS應(yīng)用進(jìn)行發(fā)布;在啟動(dòng)GIS應(yīng)用時(shí),開(kāi)發(fā)框架將自動(dòng)識(shí)別GIS應(yīng)用的服務(wù)接口,將這些服務(wù)以json、amf、avro等協(xié)議進(jìn)行發(fā)布。然后對(duì)發(fā)布的GIS應(yīng)用進(jìn)行測(cè)試,主要是對(duì)GIS應(yīng)用進(jìn)行功能測(cè)試。
由于屬于同一云平臺(tái)的GIS應(yīng)用共享云平臺(tái)上的軟硬件資源,所以GIS應(yīng)用之間可以是相互依賴(lài)的,假設(shè)云平臺(tái)包括未注冊(cè)的第一GIS應(yīng)用和已注冊(cè)的第二GIS應(yīng)用,所述第一GIS應(yīng)用可調(diào)用第二GIS應(yīng)用的接口jar包,當(dāng)啟動(dòng)第一GIS應(yīng)用進(jìn)行單元測(cè)試時(shí),遠(yuǎn)程代理框架將為第二GIS應(yīng)用接口創(chuàng)建遠(yuǎn)程代理對(duì)象,當(dāng)?shù)谝籊IS應(yīng)用調(diào)用第二GIS應(yīng)用的接口時(shí),遠(yuǎn)程代理對(duì)象將訪問(wèn)部署在云平臺(tái)上的第二GIS應(yīng)用的實(shí)例,并將返回結(jié)果發(fā)送給第一GIS應(yīng)用,可以在本地對(duì)第一GIS應(yīng)用進(jìn)行單元測(cè)試,無(wú)需關(guān)心第二GIS應(yīng)用的部署。第一GIS應(yīng)用通過(guò)單元測(cè)試后注冊(cè)到中央倉(cāng)庫(kù)中,然后進(jìn)行上述的發(fā)布和測(cè)試。
創(chuàng)建GIS應(yīng)用的實(shí)例,申請(qǐng)GIS應(yīng)用的實(shí)例所需硬件資源;通過(guò)審核后,GIS應(yīng)用程序會(huì)發(fā)布到生產(chǎn)環(huán)境中,然后需要對(duì)GIS應(yīng)用進(jìn)行部署,首先要為GIS應(yīng)用創(chuàng)建實(shí)例,申請(qǐng)GIS應(yīng)用的實(shí)例所需的硬件資源,例如CPU核數(shù)、內(nèi)存數(shù)、實(shí)例數(shù)等。
為GIS應(yīng)用的實(shí)例分配硬件資源,啟動(dòng)指定數(shù)量的容器;云平臺(tái)根據(jù)資源調(diào)度算法為GIS應(yīng)用的實(shí)例分配足夠的硬件資源,使用虛擬化技術(shù),啟動(dòng)指定數(shù)量的容器。本實(shí)施例中,云平臺(tái)會(huì)根據(jù)云平臺(tái)上的資源使用情況,采用DRF(Dominant Resource Fairness)算法為GIS應(yīng)用在云平臺(tái)上分配資源。DRF算法是一種針對(duì)不同資源類(lèi)型的max-min fairness算法。這種算法會(huì)最大化云平臺(tái)上的GIS應(yīng)用收到最小分配。這樣每臺(tái)服務(wù)器上面可以部署不同的GIS應(yīng)用,充分利用服務(wù)器資源。GIS云平臺(tái)還支持其他多種資源分配策略。例如唯一分配策略,每臺(tái)服務(wù)器有且只能部署一個(gè)GIS應(yīng)用;集群分配策略,云平臺(tái)可以將GIS應(yīng)用分配到具有共同屬性值的服務(wù)器上面,比如,GIS應(yīng)用需要特殊的服務(wù)器作為支撐,那么可以為這些服務(wù)器打上特殊的標(biāo)簽屬性,使GIS應(yīng)用在部署的時(shí)候可以部署到這些特殊的服務(wù)器上;分組策略,云平臺(tái)可以把GIS應(yīng)用分配到不同的組的服務(wù)器上,以達(dá)到高可用的目標(biāo),比如,將同一機(jī)架上面的服務(wù)器做為一個(gè)組,那么GIS云平臺(tái)將GIS應(yīng)用分別部署到不同的機(jī)架上,保證一個(gè)機(jī)架停電,不會(huì)影響GIS應(yīng)用的正常運(yùn)行。云平臺(tái)提供資源的統(tǒng)一調(diào)度,可以較好地解決液位高峰期時(shí)服務(wù)器資源緊張,在其他時(shí)間服務(wù)器資源被浪費(fèi)的情況。例如,當(dāng)業(yè)務(wù)高峰期來(lái)臨時(shí),可以將測(cè)試環(huán)境的資源和一些非重要業(yè)務(wù)應(yīng)用的部分資源釋放出來(lái),分配給關(guān)鍵業(yè)務(wù)應(yīng)用;當(dāng)業(yè)務(wù)高峰期過(guò)后,再將所述資源從關(guān)鍵業(yè)務(wù)應(yīng)用中釋放出來(lái)。
在所述容器自動(dòng)鏡像部署所述GIS應(yīng)用的實(shí)例,然后將啟動(dòng)的GIS應(yīng)用的實(shí)例的地址注冊(cè)到智能路由器中。本實(shí)施例中,云平臺(tái)將啟動(dòng)的所述GIS應(yīng)用的實(shí)例注冊(cè)到智能路由器中,業(yè)務(wù)用戶(hù)通過(guò)智能路由器就可以訪問(wèn)運(yùn)行在云平臺(tái)上的GIS應(yīng)用。智能路由器根據(jù)業(yè)務(wù)用戶(hù)的請(qǐng)求URL,將請(qǐng)求分發(fā)到正確的GIS應(yīng)用實(shí)例上,智能路由器會(huì)根據(jù)GIS應(yīng)用指定的策略在所述GIS應(yīng)用的實(shí)例之間實(shí)行負(fù)載均衡策略,所述負(fù)載均衡策略包括:輪詢(xún)策略、iphash策略和cookie策略等。
本實(shí)施例中,GIS應(yīng)用部署包會(huì)上傳至云平臺(tái),云平臺(tái)使用鏡像模板文件自動(dòng)生成GIS應(yīng)用的鏡像文件,并將所述鏡像文件存放到鏡像倉(cāng)庫(kù)中,并在云平臺(tái)數(shù)據(jù)庫(kù)中進(jìn)行注冊(cè)。
服務(wù)器可以從鏡像倉(cāng)庫(kù)中拉去GIS應(yīng)用的鏡像文件,使用鏡像文件啟動(dòng)虛擬機(jī),并分配指定的資源。本實(shí)施例中,虛擬機(jī)采用容器隔離技術(shù),同一臺(tái)服務(wù)器上的不同虛擬機(jī)之間的資源是相互隔離的,即其中一個(gè)虛擬機(jī)不能訪問(wèn)另一個(gè)虛擬機(jī)中的資源,一個(gè)虛擬機(jī)的崩潰也不會(huì)影響其他虛擬機(jī)的正常運(yùn)行。
周期性地檢測(cè)GIS應(yīng)用的實(shí)例是否正常運(yùn)行,若否,則關(guān)閉所述實(shí)例,并部署新的實(shí)例。本實(shí)施例中云平臺(tái)使用探針技術(shù)周期性地檢測(cè)部署的GIS應(yīng)用的實(shí)例是否正常運(yùn)行,當(dāng)部署新的實(shí)例后,重新為其分配資源。
當(dāng)GIS應(yīng)用的性能負(fù)載過(guò)大時(shí),增加GIS應(yīng)用的實(shí)例數(shù)。增加了新的實(shí)例后,云平臺(tái)會(huì)根據(jù)資源分配策略,為新的實(shí)例分配新的資源。
當(dāng)GIS應(yīng)用的實(shí)例宕機(jī)時(shí),創(chuàng)建新的實(shí)例,可以保證GIS應(yīng)用持續(xù)高可用地運(yùn)行。
當(dāng)升級(jí)GIS應(yīng)用時(shí),部署新的實(shí)例,所述新的實(shí)例啟動(dòng)成功后,關(guān)閉升級(jí)前的實(shí)例。當(dāng)GIS應(yīng)用進(jìn)行版本升級(jí)時(shí),云平臺(tái)可以實(shí)現(xiàn)GIS應(yīng)用不停機(jī)平滑升級(jí),在切換GIS應(yīng)用的版本時(shí),云平臺(tái)為新版本的GIS應(yīng)用部署新的實(shí)例,當(dāng)實(shí)例部署成功后,云平臺(tái)會(huì)將GIS應(yīng)用舊版本的應(yīng)用實(shí)例逐一關(guān)閉。
記錄并保存GIS應(yīng)用的相關(guān)日志。云平臺(tái)還記錄和保存GIS應(yīng)用相關(guān)的海量日志,運(yùn)行GIS應(yīng)用時(shí),運(yùn)行框架提供日志組件,當(dāng)業(yè)務(wù)調(diào)用GIS應(yīng)用上發(fā)布的服務(wù)時(shí),運(yùn)行框架攔截服務(wù)請(qǐng)求,讀取請(qǐng)求的RequestId(服務(wù)請(qǐng)求ID)參數(shù),如果RequestId為空,那么運(yùn)行框架生成RequestId,并使用RequestId創(chuàng)建請(qǐng)求調(diào)用上下文。
運(yùn)行框架使用容器名、應(yīng)用名、應(yīng)用版本號(hào)、應(yīng)用實(shí)例名初始化請(qǐng)求調(diào)用上下文時(shí),把請(qǐng)求調(diào)用上下文保存到線程變量中,生成ServiceId(服務(wù)調(diào)用ID),使用ServiceId創(chuàng)建服務(wù)調(diào)用上下文,然后從服務(wù)請(qǐng)求上下文的服務(wù)調(diào)用上下文的棧中讀出棧中第一個(gè)服務(wù)調(diào)用上下文,使用該服務(wù)調(diào)用上下文的ServiceId設(shè)置當(dāng)前的服務(wù)調(diào)用上下文的referenceServiceId(調(diào)用當(dāng)前服務(wù)的服務(wù)調(diào)用的ServiceId),把當(dāng)前服務(wù)調(diào)用的上下文壓入服務(wù)請(qǐng)求上下文的服務(wù)調(diào)用上下文的棧中
運(yùn)行框架使用服務(wù)分組、服務(wù)、服務(wù)方法、服務(wù)開(kāi)始時(shí)間初始化當(dāng)前服務(wù)調(diào)用上下文時(shí),首先調(diào)用服務(wù)邏輯代碼,從請(qǐng)求服務(wù)上下文的服務(wù)調(diào)用上下文的棧中彈出第一個(gè)服務(wù)調(diào)用請(qǐng)求上下文,設(shè)置服務(wù)調(diào)用上下文的服務(wù)結(jié)束時(shí)間。
本實(shí)施例中,運(yùn)行框架使用日志組件服務(wù)請(qǐng)求上下文和服務(wù)調(diào)用上下文的內(nèi)容寫(xiě)入系統(tǒng)日志中,日志內(nèi)容包括:日志時(shí)間、容器名、應(yīng)用名,應(yīng)用版本號(hào)、應(yīng)用實(shí)例名、所屬系統(tǒng)、日志等級(jí)、日志類(lèi)型、請(qǐng)求ID(RequestId)、當(dāng)前服務(wù)調(diào)用ID(serviceId),、調(diào)用當(dāng)前服務(wù)的服務(wù)調(diào)用ID(referenceServiceId)、服務(wù)分組、服務(wù)、服務(wù)方法、服務(wù)開(kāi)始時(shí)間、服務(wù)結(jié)束時(shí)間、錯(cuò)誤代碼和信息等。其中日志類(lèi)型為性能日志,日志組件將日志寫(xiě)入到日志收集器中,然后日志收集器將日志發(fā)送到分布式的存儲(chǔ)系統(tǒng)中。
客戶(hù)端查詢(xún)?nèi)罩緯r(shí),首先使用查詢(xún)應(yīng)用實(shí)時(shí)日志獲取日志游標(biāo),然后循環(huán)使用游標(biāo)滾動(dòng)查詢(xún)應(yīng)用日志。本實(shí)施例中,所述游標(biāo)的格式為:RSA(<queryTime>|<taskId>|<timeout>|<pageSize>|<logTime>|<logId>)queryTime表示查詢(xún)實(shí)時(shí)應(yīng)用日志的時(shí)間,精確到毫秒;taskId為容器名(marathon的任務(wù)id)timeout為游標(biāo)超時(shí)時(shí)間,如果queryTime+timeout<當(dāng)前時(shí)間,那么游標(biāo)失效;pageSize表示返回最大日志數(shù);logTime表示最后一條日志的時(shí)間,精確到毫秒;logId表示最后一條日志的id。
查詢(xún)應(yīng)用實(shí)時(shí)日志接口時(shí),將queryTime和logTime設(shè)置為當(dāng)前服務(wù)器時(shí)間,logId為空;滾動(dòng)查詢(xún)應(yīng)用實(shí)時(shí)日志接口時(shí),使用queryTime和timeout判斷是否游標(biāo)是否超時(shí),如果超時(shí),那么返回超時(shí)錯(cuò)誤;如果logId為空,查詢(xún)大于等于logTime的日志,查詢(xún)?nèi)罩緱l數(shù)為pageSize,然后執(zhí)行第5步;如果logId不為空,查詢(xún)大于等于logTime的日志,查詢(xún)?nèi)罩緱l數(shù)為2*pageSzie;查找日志中是否包含logId,如果不存在,那么返回前pageSize條數(shù)的日志,如果存在,那么返回logId之后的pageSize條數(shù)的日志。
若要生成新的游標(biāo),那么設(shè)置queryTime為服務(wù)器當(dāng)前時(shí)間,logTime為最后一條日志的時(shí)間,logId為最后一條日志的id。
請(qǐng)求調(diào)用鏈分析方法是:獲取一次服務(wù)請(qǐng)求的RequestId;查詢(xún)所有這個(gè)RequestId的性能日志,并以ServiceId為key將日志存儲(chǔ)在Map對(duì)象中;循環(huán)Map所有的日志,讀取日志的referenceServiceId;如果referenceServiceId為空,那么將該日志的ServiceId保存在FirstId變量中,如果referenceServiceId不為空,那么使用referenceServiceId在Map對(duì)象中找到對(duì)應(yīng)的調(diào)用日志,然后將該日志加入到調(diào)用日志對(duì)象的調(diào)用列表ServiceIds中;使用FirstId獲取調(diào)用日志對(duì)象,遍歷ServiceIds調(diào)用列表深度優(yōu)先遍歷調(diào)用日志,并生成xml文件;客戶(hù)端解析xml文件以樹(shù)形的方式展示服務(wù)的調(diào)用關(guān)系。
本實(shí)施例中,研發(fā)、測(cè)試、運(yùn)維、業(yè)務(wù)用戶(hù)可以共享云平臺(tái)上的GIS應(yīng)用,使異地協(xié)作開(kāi)發(fā)應(yīng)用成為可能;并且研發(fā)、測(cè)試和生產(chǎn)為同一云平臺(tái)環(huán)境,降低了GIS應(yīng)用的部署難度,提高了部署成功率,并且避免了繁重的手工部署的缺陷,實(shí)現(xiàn)了GIS應(yīng)用的靈活、快速部署。
如圖3所示,與上述的GIS應(yīng)用部署方法相對(duì)應(yīng),本實(shí)施例還涉及一種基于PaaS的GIS應(yīng)用部署系統(tǒng),包括:
創(chuàng)建模塊1,用于創(chuàng)建GIS應(yīng)用的實(shí)例,一個(gè)GIS應(yīng)用可創(chuàng)建多個(gè)實(shí)例,可根據(jù)需要進(jìn)行選擇;
申請(qǐng)模塊2,用于申請(qǐng)GIS應(yīng)用的實(shí)例所需的硬件資源,每一個(gè)實(shí)例都需要足夠的資源空間;
分配模塊3,用于分配硬件資源,本實(shí)施例中,云平臺(tái)統(tǒng)一調(diào)度分配GIS應(yīng)用所需要的資源;
啟動(dòng)模塊4,用于啟動(dòng)容器,啟動(dòng)容器的數(shù)量按指定的數(shù)量進(jìn)行;
部署模塊5,用于鏡像部署所述GIS應(yīng)用的實(shí)例;
注冊(cè)模塊6,用于將啟動(dòng)的實(shí)例的地址注冊(cè)到智能路由器中。
綜上所述,本發(fā)明提供的一種基于PaaS的GIS應(yīng)用部署方法及系統(tǒng),在分配的指定容器中部署GIS應(yīng)用的實(shí)例,避免了繁重的手工部署的缺陷,部署效率高,并且部署成功率高,業(yè)務(wù)通過(guò)智能路由器便可訪問(wèn)所有的GIS應(yīng)用,使用方便靈活;GIS應(yīng)用共享軟硬件資源可以提高資源利用率,降低成本;研發(fā)、測(cè)試、運(yùn)維、業(yè)務(wù)用戶(hù)可以共享云平臺(tái)上的GIS應(yīng)用,使異地協(xié)作開(kāi)發(fā)應(yīng)用成為可能。
以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等同變換,或直接或間接運(yùn)用在相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。