1.一種微服務(wù)架構(gòu)可自動伸縮的GIS服務(wù)裝置,其特征在于,包括:Master進(jìn)程模塊、Daemon進(jìn)程模塊和一個或多個Worker進(jìn)程模塊;
其中,所述Master進(jìn)程模塊構(gòu)造用于,啟動Master進(jìn)程作為整個GIS服務(wù)裝置中GIS服務(wù)統(tǒng)一的訪問入口,并且用于GIS服務(wù)管理以及Worker進(jìn)程管理;
其中,所述Daemon進(jìn)程模塊構(gòu)造用于,運行Daemon進(jìn)程,對所述Master進(jìn)程進(jìn)行后臺監(jiān)控,接收Master進(jìn)程的狀態(tài)報告,根據(jù)所述報告檢查所述Master進(jìn)程的運行情況,當(dāng)所述Master進(jìn)程異常退出時,所述Daemon進(jìn)程自動啟動一個新的Master進(jìn)程;
其中,所述一個或多個Worker進(jìn)程模塊構(gòu)造用于,運行Worker進(jìn)程,由所述Master進(jìn)程啟動和管理,接收所述Master進(jìn)程的指令進(jìn)行服務(wù)發(fā)布、刪除和/或更新操作,定期向所述Master進(jìn)程報告所述一個或多個Work進(jìn)程的狀態(tài)。
2.根據(jù)權(quán)利要求1所述的微服務(wù)架構(gòu)可自動伸縮的GIS服務(wù)裝置,其特征在于,所述Master進(jìn)程模塊包括以下子模塊:
- Worker進(jìn)程管理子模塊,其構(gòu)造用于所述一個或多個Worker進(jìn)程的管理,實施添加、刪除和/或修改所述一個或多個Worker進(jìn)程的操作;
- 狀態(tài)保持子模塊,其構(gòu)造用于收集所述Master進(jìn)程的健康狀況和/或所述一個或多個Worker進(jìn)程的狀態(tài)信息,上報到所述Daemon進(jìn)程,監(jiān)控所述Daemon進(jìn)程的健康狀況,其中,當(dāng)檢測出所述Daemon進(jìn)程監(jiān)控狀況異常時,重啟Daemon進(jìn)程,接收所述一個或多個Worker進(jìn)程上報的狀態(tài)信息,并根據(jù)這些狀態(tài)信息判斷所述一個或多個Worker進(jìn)程的監(jiān)控狀況,其中,當(dāng)發(fā)現(xiàn)所述一個或多個Worker進(jìn)程運行異常,通知所述Worker進(jìn)程管理子模塊和服務(wù)管理部署子模塊,重啟Worker進(jìn)程并且重新部署GIS服務(wù);
- 服務(wù)管理部署子模塊,其構(gòu)造用于所述GIS服務(wù)的管理,對整個裝置的GIS服務(wù)進(jìn)行管理,包括:發(fā)布、刪除和/或修改GIS服務(wù),將GIS服務(wù)部署到各Worker進(jìn)程,并且其構(gòu)造用于GIS服務(wù)的自動伸縮,通過監(jiān)控各GIS服務(wù)的負(fù)載情況和請求響應(yīng)情況,對GIS服務(wù)進(jìn)行自動伸縮;
- 服務(wù)調(diào)度子模塊,其構(gòu)造用于整合各Worker進(jìn)程所有服務(wù)以及服務(wù)請求的轉(zhuǎn)發(fā),將各Worker進(jìn)程的GIS服務(wù)進(jìn)行整合,生成服務(wù)目錄,提供統(tǒng)一的服務(wù)訪問入口,將接到的服務(wù)請求調(diào)度到可用的Worker進(jìn)程進(jìn)行處理;
- 支撐子模塊,其構(gòu)造用于實施安全控制、許可控制和/或運維監(jiān)控的操作;
- 配置管理子模塊,其構(gòu)造用于讀取、保存和/或修改所述Master進(jìn)程配置信息,其還構(gòu)造用于讀取、保存和/或修改GIS服務(wù)的配置信息。
3.根據(jù)權(quán)利要求1所述的微服務(wù)架構(gòu)可自動伸縮的GIS服務(wù)裝置,其特征在于,Daemon進(jìn)程模塊包括以下子模塊:
- Master進(jìn)程管理子模塊,其構(gòu)造用于啟動、停止和/或重啟所述Master進(jìn)程;
- 退出監(jiān)聽子模塊,其構(gòu)造用于監(jiān)聽所述GIS服務(wù)裝置的退出事件,其中,當(dāng)監(jiān)聽到退出事件時,通知所述Master進(jìn)程管理子模塊實施停止所述Master進(jìn)程的操作,并停止當(dāng)前Daemon進(jìn)程的運行,從而使當(dāng)前進(jìn)程正常退出;
- 健康檢查子模塊,其構(gòu)造用于接收所述Master進(jìn)程的狀態(tài)報告,分析所述Master進(jìn)程的健康狀況,并且根據(jù)所述Master進(jìn)程的健康狀況進(jìn)行以下處理:
如果監(jiān)聽到所述Master進(jìn)程的資源占用超過設(shè)定的閾值,則通知實施Master進(jìn)程管理子模塊實施重啟所述Master進(jìn)程的操作;
如果監(jiān)聽到所述Master進(jìn)程已經(jīng)異常退出,則通知所述Master進(jìn)程管理子模塊實施啟動所述Master進(jìn)程的操作。
4.根據(jù)權(quán)利要求1所述的微服務(wù)架構(gòu)可自動伸縮的GIS服務(wù)裝置,其特征在于,所述一個或多個Worker進(jìn)程模塊包括以下子模塊:
- 服務(wù)管理子模塊,其構(gòu)造用于GIS服務(wù)的管理,對本W(wǎng)orker進(jìn)程的GIS服務(wù)進(jìn)行發(fā)布、刪除和/或修改GIS服務(wù)的管理;
- GIS服務(wù)子模塊,其構(gòu)造用于提供GIS服務(wù)功能,其方式是,接收GIS請求,并選擇特定的GIS服務(wù)來響應(yīng)該請求,并返回響應(yīng)結(jié)果;
- 狀態(tài)上報子模塊,其構(gòu)造用于定期將本W(wǎng)orker進(jìn)程的狀態(tài)以及在本W(wǎng)orker進(jìn)程上的服務(wù)狀態(tài)上報到Master進(jìn)程。
5.一種基于根據(jù)權(quán)利要求1-4中任一種所述的GIS服務(wù)裝置進(jìn)行自動伸縮的控制方法,其特征在于,所述方法包括以下工作流程:
- 啟動所述GIS服務(wù)裝置的工作流程;
- 停止所述GIS服務(wù)裝置的工作流程;
- 通過Master進(jìn)程發(fā)布GIS服務(wù)的工作流程;
- Master進(jìn)程處理GIS服務(wù)請求的工作流程;
- Master進(jìn)程對GIS服務(wù)進(jìn)行自動伸縮的工作流程;
- Master進(jìn)程判斷GIS服務(wù)是否需要自動伸縮的工作流程。
6.根據(jù)權(quán)利要求5所述的、基于根據(jù)權(quán)利要求1-4中任一種所述的GIS服務(wù)裝置進(jìn)行自動伸縮的控制方法,其特征在于,啟動所述GIS服務(wù)裝置的工作流程包括以下步驟:
- 啟動Daemon進(jìn)程;
- Daemon進(jìn)程初始化,初始化內(nèi)部的各子模塊,直到各子模塊初始化完畢;
- Daemon進(jìn)程內(nèi)的Master進(jìn)程管理子模塊啟動Master進(jìn)程,并且判斷Master進(jìn)程是否啟動成功,其中,如果Master進(jìn)程啟動成功,則Master進(jìn)程初始化,如果Master進(jìn)程啟動失敗,則在控制臺和日志文件中給出提示信息,從而退出Daemon進(jìn)程;
- 初始化完成之后,判斷GIS服務(wù)裝置是否啟動成功,其中,如果GIS服務(wù)裝置啟動成功并初始化完畢,則在控制臺和日志文件中給出提示信息,如果GIS服務(wù)裝置啟動失敗,則同樣在控制臺和日志文件中給出提示信息。
7.根據(jù)權(quán)利要求5所述的、基于根據(jù)權(quán)利要求1-4中任一種所述的GIS服務(wù)裝置進(jìn)行自動伸縮的控制方法,其特征在于,停止GIS服務(wù)裝置的工作流程包括:
- 向Daemon進(jìn)程發(fā)送退出命令;
- Daemon進(jìn)程的退出監(jiān)聽子模塊接收到退出命令后,退出監(jiān)聽子模塊將接收到的退出命令轉(zhuǎn)發(fā)給Master進(jìn)程管理子模塊;
- Daemon進(jìn)程的Master進(jìn)程管理子模塊通過管道向Master進(jìn)程發(fā)出退出命令;
- Master進(jìn)程接收到退出命令后,銷毀Master進(jìn)程以及被Master進(jìn)程管理的相關(guān)Worker進(jìn)程;
- Master進(jìn)程的各子模塊都停止并銷毀后,Master進(jìn)程退出;
- Daemon進(jìn)程監(jiān)測到Master進(jìn)程徹底退出的事件后,開始依次停止并銷毀Daemon進(jìn)程的各子模塊,直到所有子模塊被銷毀完畢,Daemon進(jìn)程退出;
- GIS服務(wù)裝置的所有相關(guān)進(jìn)程都正常退出,GIS服務(wù)裝置正常停止。
8.根據(jù)權(quán)利要求5所述的、基于根據(jù)權(quán)利要求1-4中任一種所述的GIS服務(wù)裝置進(jìn)行自動伸縮的控制方法,其特征在于,通過Master進(jìn)程發(fā)布GIS服務(wù)的工作流程包括以下步驟:
- 向Master進(jìn)程發(fā)送發(fā)布GIS服務(wù)的請求;
- Master進(jìn)程的服務(wù)管理部署子模塊接收到該請求,并響應(yīng)該請求;
- Master進(jìn)程的服務(wù)管理部署子模塊根據(jù)服務(wù)配置信息,計算得到該服務(wù)的待部署實例個數(shù),其中,如果為N,則表示需要在N個Worker中部署該服務(wù);
- Master進(jìn)程的服務(wù)管理部署子模塊向Worker進(jìn)程管理子模塊查詢當(dāng)前已啟動的Worker進(jìn)程個數(shù)M,其中,如果當(dāng)前已啟動的Worker進(jìn)程個數(shù)M小于該服務(wù)的待部署實例個數(shù)N,則通知Worker進(jìn)程管理子模塊新啟動(N-M)個Worker進(jìn)程,如果M大于或等于N,則Master進(jìn)程的服務(wù)管理部署子模塊向Worker進(jìn)程管理子模塊查詢部署服務(wù)最少的N個Worker進(jìn)程,得到N個Worker進(jìn)程的代理對象;
- 遍歷這N個Worker進(jìn)程的代理對象,依次將當(dāng)前的GIS服務(wù)通過Worker進(jìn)程代理對象部署到對應(yīng)的Worker進(jìn)程。
9.根據(jù)權(quán)利要求5所述的、基于根據(jù)權(quán)利要求1-4中任一種所述的GIS服務(wù)裝置進(jìn)行自動伸縮的控制方法,其特征在于,Master進(jìn)程處理GIS服務(wù)請求的工作流程包括以下步驟:
- GIS服務(wù)裝置的普通用戶向Master進(jìn)程發(fā)送GIS請求;
- Master進(jìn)程的服務(wù)調(diào)度子模塊接收到該請求,解析該請求,計算得到當(dāng)前GIS請求的對應(yīng)的服務(wù)名稱;
- Master進(jìn)程的服務(wù)調(diào)度子模塊根據(jù)服務(wù)名向服務(wù)管理部署子模塊查詢哪些Worker進(jìn)程部署了該服務(wù),并返回Worker進(jìn)程的名稱列表;
- Master進(jìn)程的服務(wù)調(diào)度子模塊根據(jù)Worker進(jìn)程的名稱列表向Worker進(jìn)程管理子模塊查詢并返回指定名稱的Worker進(jìn)程代理對象的列表;
- Master進(jìn)程的服務(wù)調(diào)度子模塊根據(jù)負(fù)載均衡算法從Worker進(jìn)程代理對象的列表獲取一個Worker進(jìn)程代理對象;
- Master進(jìn)程的服務(wù)調(diào)度子模塊通過Worker進(jìn)程代理對象處理該請求;
- Master進(jìn)程的服務(wù)調(diào)度子模塊判斷Worker進(jìn)程代理對象返回的響應(yīng)中的狀態(tài)標(biāo)志,其中,如果標(biāo)志為服務(wù)暫不可用,則重新嘗試從Worker進(jìn)程代理對象的列表獲取一個Worker進(jìn)程代理對象,最多嘗試預(yù)先確定的次數(shù);否則,表示請求已經(jīng)得到響應(yīng),將Worker進(jìn)程代理對象返回的響應(yīng)信息回寫到服務(wù)調(diào)度子模塊接收到的請求響應(yīng)中,請求處理完成。
10.根據(jù)權(quán)利要求5所述的、基于根據(jù)權(quán)利要求1-4中任一種所述的GIS服務(wù)裝置進(jìn)行自動伸縮的控制方法,其特征在于,Master進(jìn)程對GIS服務(wù)進(jìn)行自動伸縮的工作流程包括以下步驟:
- 在Master進(jìn)程的支撐子模塊中包含有監(jiān)控與統(tǒng)計單元,所述監(jiān)控與統(tǒng)計單元設(shè)置用于監(jiān)控每個GIS服務(wù)負(fù)載、請求處理的耗時以及硬件資源的使用情況;
- Master進(jìn)程的服務(wù)管理部署子模塊定期向支撐子模塊的監(jiān)控與統(tǒng)計單元查詢每個GIS服務(wù)的負(fù)載以及硬件資源使用情況,來決定是否需要對其進(jìn)行自動伸縮,其方式是,得到所有GIS服務(wù)是否需要擴(kuò)展或收縮實例的標(biāo)志以及每個GIS服務(wù)待擴(kuò)展或收縮的實例個數(shù),依次判斷這些標(biāo)志,其中,如果某GIS服務(wù)需要擴(kuò)展實例個數(shù),得到待擴(kuò)展的服務(wù)實例個數(shù)E,則開始擴(kuò)展服務(wù)實例,如果某GIS服務(wù)實例個數(shù)需要收縮,得到待收縮的服務(wù)實例個數(shù)S,則開始收縮服務(wù)實例;
- 在將當(dāng)前GIS服務(wù)新部署到E個Worker進(jìn)程中之后,Master進(jìn)程的服務(wù)管理部署子模塊根據(jù)當(dāng)前GIS服務(wù)名查詢得到部署過該GIS服務(wù)的Worker進(jìn)程的名稱列表L1,從所述名稱列表中選取S個Worker進(jìn)程名稱,得到待卸載該GIS服務(wù)的Worker進(jìn)程的名稱列表L2,據(jù)此從Worker進(jìn)程管理子模塊查詢得到S個Worker進(jìn)程的代理對象的列表L3;
- Master進(jìn)程的服務(wù)管理部署子模塊遍歷所述S個Worker進(jìn)程的代理對象的列表,每次遍歷過程中得到當(dāng)前的Worker進(jìn)程的代理對象,通過代理對象來卸載當(dāng)前GIS服務(wù),
其中,在所述開始擴(kuò)展服務(wù)實例中,Master進(jìn)程的服務(wù)管理部署子模塊根據(jù)服務(wù)名查詢該GIS服務(wù)當(dāng)前已部署的實例個數(shù)N,服務(wù)管理部署子模塊從Worker進(jìn)程管理子模塊查詢當(dāng)前已啟動的Worker進(jìn)程個數(shù)M,如果N+E≤M,表示當(dāng)前的Worker個數(shù)夠用,則將當(dāng)前GIS服務(wù)新部署到E個Worker進(jìn)程中,如果N+E>M,表示當(dāng)前的Worker個數(shù)不夠用,則重新啟動(N+E-M)個Worker進(jìn)程,
其中,在將當(dāng)前GIS服務(wù)新部署到E個Worker進(jìn)程中的所述步驟中,Master進(jìn)程的服務(wù)管理部署子模塊根據(jù)當(dāng)前GIS服務(wù)名查詢得到部署過該GIS服務(wù)的Worker進(jìn)程名稱列表,再向Worker進(jìn)程管理子模塊查詢所有Worker進(jìn)程名稱列表,根據(jù)這兩個列表,能夠得到?jīng)]有部署過當(dāng)前GIS服務(wù)的E個Worker名稱的列表,根據(jù)這個列表向Worker進(jìn)程管理子模塊查詢得到這個E個Worker進(jìn)程代理對象,然后依次調(diào)用這E個Worker進(jìn)程代理對象將當(dāng)前GIS服務(wù)部署對應(yīng)的Worker進(jìn)程中。
11.根據(jù)權(quán)利要求5所述的、基于根據(jù)權(quán)利要求1-4中任一種所述的GIS服務(wù)裝置進(jìn)行自動伸縮的控制方法,其特征在于,Master進(jìn)程判斷GIS服務(wù)是否需要自動伸縮的工作流程包括以下步驟:
- Master進(jìn)程的服務(wù)管理部署子模塊根據(jù)服務(wù)名從支撐子模塊的監(jiān)控與統(tǒng)計單元查詢,得到當(dāng)前的硬件資源使用情況以及該GIS服務(wù)在最近的一分鐘平均每秒接收到的并發(fā)請求數(shù)R;
- Master進(jìn)程的服務(wù)管理部署子模塊根據(jù)服務(wù)名查詢,得到該GIS服務(wù)當(dāng)前已部署的實例個數(shù)N;
- Master進(jìn)程的服務(wù)管理部署子模塊根據(jù)服務(wù)名從配置管理子模塊查詢,得到該GIS服務(wù)每服務(wù)實例最大處理的并發(fā)請求數(shù)RP;
- 借助公式E = ( N - R/RP )來計算待伸縮的服務(wù)實例個數(shù)E,根據(jù)計算結(jié)果,存在以下不同情況:
a)如果E>1,則表示當(dāng)前的服務(wù)實例個數(shù)夠用,且有較明顯的冗余,需要收縮服務(wù)實例個數(shù),返回服務(wù)需要收縮的標(biāo)志,且收縮的服務(wù)實例個數(shù)為E;
b) 如果E<-1,則表示當(dāng)前的服務(wù)實例個數(shù)不夠用,且有較大的缺口,需要擴(kuò)展服務(wù)實例個數(shù),返回服務(wù)需要擴(kuò)展的標(biāo)志,且擴(kuò)展的服務(wù)實例個數(shù)為-E;
c) 如果E≥-1且E≤1,則表示當(dāng)前的服務(wù)實例個數(shù)正好夠用,無需伸縮服務(wù)實例個數(shù)。