本發(fā)明涉及大規(guī)模集群系統(tǒng)管理領(lǐng)域,特別涉及一種數(shù)據(jù)更新系統(tǒng)及方法。
背景技術(shù):
集群系統(tǒng)是一組相互獨(dú)立的、通過高速網(wǎng)絡(luò)互聯(lián)的服務(wù)器所構(gòu)成一個設(shè)備組,并以單一系統(tǒng)的模式加以管理。當(dāng)客戶端與集群系統(tǒng)相互作用時,集群系統(tǒng)中的多個服務(wù)器相當(dāng)于是一個獨(dú)立的服務(wù)器。在集群系統(tǒng)中的每一個服務(wù)器上都存儲有處理不同業(yè)務(wù)的應(yīng)用,即業(yè)務(wù)單元,當(dāng)有新的應(yīng)用加入或者要對舊的應(yīng)用進(jìn)行修改時,就需要對集群系統(tǒng)進(jìn)行更新。
現(xiàn)有技術(shù)中,在對集群系統(tǒng)進(jìn)行數(shù)據(jù)更新時,比如對某個應(yīng)用進(jìn)行更新時,首先需要在該集群系統(tǒng)相應(yīng)的服務(wù)器中停止運(yùn)行舊應(yīng)用,即停止該舊應(yīng)用提供的服務(wù),之后刪除該舊應(yīng)用并添加新應(yīng)用,重啟相應(yīng)的服務(wù)器后便可運(yùn)行更新后的新應(yīng)用,即提供更新后的服務(wù),進(jìn)而完成數(shù)據(jù)的更新。
在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
由于數(shù)據(jù)更新的過程中需要停止提供服務(wù),之后還需重啟相應(yīng)的服務(wù)器才能完成更新,使服務(wù)器能夠提供更新后的服務(wù)。而為了不影響對業(yè)務(wù)請求的處理,通常情況下會在0點(diǎn)進(jìn)行更新,因此上述數(shù)據(jù)更新方式限制性強(qiáng)、更新時間長且操作繁瑣。
技術(shù)實現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種數(shù)據(jù)更新系統(tǒng)及方法。所述技術(shù)方案如下:
第一方面,提供了一種數(shù)據(jù)更新系統(tǒng),所述系統(tǒng)包括文件服務(wù)器、至少一個業(yè)務(wù)服務(wù)器和業(yè)務(wù)管理服務(wù)器;
所述文件服務(wù)器用于存儲待更新數(shù)據(jù)包,所述待更新數(shù)據(jù)包中包括待更新業(yè)務(wù)模塊;
業(yè)務(wù)服務(wù)器包括容器和掛載至所述容器的至少一個業(yè)務(wù)模塊,每一個業(yè)務(wù)模塊包括至少一個業(yè)務(wù)單元,所述容器至少包括業(yè)務(wù)響應(yīng)模塊;
所述業(yè)務(wù)管理服務(wù)器用于在檢測到更新指令后,向目標(biāo)業(yè)務(wù)服務(wù)器轉(zhuǎn)發(fā)所述更新指令,所述更新指令至少包括所述待更新業(yè)務(wù)模塊的業(yè)務(wù)標(biāo)識,所述目標(biāo)業(yè)務(wù)服務(wù)器用于提供與所述業(yè)務(wù)標(biāo)識對應(yīng)的業(yè)務(wù)處理;
所述目標(biāo)業(yè)務(wù)服務(wù)器用于在接收到所述更新指令后,根據(jù)所述業(yè)務(wù)標(biāo)識從所述文件服務(wù)器獲取所述待更新業(yè)務(wù)模塊,并對所述待更新業(yè)務(wù)模塊進(jìn)行解析,得到新業(yè)務(wù)單元的標(biāo)識信息、調(diào)用信息和版本信息;根據(jù)所述新業(yè)務(wù)單元的標(biāo)識信息將所述調(diào)用信息注冊至所述目標(biāo)業(yè)務(wù)服務(wù)器中容器的業(yè)務(wù)響應(yīng)模塊,以替換與所述新業(yè)務(wù)單元的標(biāo)識信息相同的舊業(yè)務(wù)單元的調(diào)用信息,使得后續(xù)響應(yīng)業(yè)務(wù)請求時直接調(diào)用所述新業(yè)務(wù)單元。
可選地,所述容器和所述至少一個業(yè)務(wù)模塊均采用開放服務(wù)網(wǎng)關(guān)協(xié)議OSGI規(guī)范進(jìn)行打包,使得所述容器和所述至少一個業(yè)務(wù)模塊之間不存在耦合。
可選地,所述系統(tǒng)還包括分布式管理服務(wù)器,所述分布式管理服務(wù)器中存儲有所述至少一個業(yè)務(wù)服務(wù)器的節(jié)點(diǎn)信息,節(jié)點(diǎn)信息至少包括業(yè)務(wù)服務(wù)器的標(biāo)識信息、端口信息、容器的標(biāo)識信息和版本信息、業(yè)務(wù)單元的標(biāo)識信息和版本信息、業(yè)務(wù)單元的調(diào)用次數(shù);
在所述新業(yè)務(wù)單元的調(diào)用信息注冊至所述目標(biāo)業(yè)務(wù)服務(wù)器的業(yè)務(wù)響應(yīng)模塊后,將所述新業(yè)務(wù)單元的標(biāo)識信息和版本信息注冊至所述分布式管理服務(wù)器中,并刪除所述分布式管理服務(wù)器中與所述舊業(yè)務(wù)單元的標(biāo)識信息和版本信息。
可選地,所述目標(biāo)業(yè)務(wù)服務(wù)器在檢測到所述舊業(yè)務(wù)單元處于未被調(diào)用狀態(tài)后,刪除所述舊業(yè)務(wù)單元。
可選地,所述目標(biāo)業(yè)務(wù)服務(wù)器的容器中還包括業(yè)務(wù)管理模塊,所述業(yè)務(wù)管理模塊用于根據(jù)所述更新指令解析所述待更新業(yè)務(wù)模塊中業(yè)務(wù)單元的灰度值,所述灰度值指示了所述業(yè)務(wù)單元對與指定號碼段對應(yīng)的業(yè)務(wù)請求進(jìn)行響應(yīng)。
可選地,所述系統(tǒng)還包顯示裝置,
所述顯示裝置用于顯示業(yè)務(wù)監(jiān)控頁面,所述業(yè)務(wù)監(jiān)控頁面至少展示了所述系統(tǒng)中全部業(yè)務(wù)服務(wù)器的標(biāo)識信息和端口信息、容器的標(biāo)識信息和版本信息、業(yè)務(wù)單元的標(biāo)識信息和版本信息、業(yè)務(wù)單元的調(diào)用次數(shù);
在所述新業(yè)務(wù)單元的調(diào)用信息注冊至所述目標(biāo)業(yè)務(wù)服務(wù)器的業(yè)務(wù)響應(yīng)模塊 后,在所述業(yè)務(wù)監(jiān)控頁面上展示所述新業(yè)務(wù)單元的標(biāo)識信息和版本信息。
第二方面,提供了一種數(shù)據(jù)更新方法,所述方法包括:
業(yè)務(wù)管理服務(wù)器在檢測到更新指令后,向目標(biāo)業(yè)務(wù)服務(wù)器轉(zhuǎn)發(fā)所述更新指令,所述更新指令至少包括待更新業(yè)務(wù)模塊的業(yè)務(wù)標(biāo)識,所述目標(biāo)業(yè)務(wù)服務(wù)器用于提供與所述業(yè)務(wù)標(biāo)識對應(yīng)的業(yè)務(wù)處理;
所述目標(biāo)業(yè)務(wù)服務(wù)器在接收到所述更新指令后,根據(jù)所述業(yè)務(wù)標(biāo)識從文件服務(wù)器獲取所述待更新業(yè)務(wù)模塊,并對所述待更新業(yè)務(wù)模塊進(jìn)行解析,得到新業(yè)務(wù)單元的標(biāo)識信息、調(diào)用信息和版本信息;
所述目標(biāo)業(yè)務(wù)服務(wù)器根據(jù)所述新業(yè)務(wù)單元的標(biāo)識信息將所述調(diào)用信息注冊至所述目標(biāo)業(yè)務(wù)服務(wù)器中容器的業(yè)務(wù)響應(yīng)模塊,以替換與所述標(biāo)識信息相同的舊業(yè)務(wù)單元的調(diào)用信息,使得后續(xù)響應(yīng)業(yè)務(wù)請求時直接調(diào)用所述新業(yè)務(wù)單元。
可選地,所述方法還包括:
所述目標(biāo)業(yè)務(wù)服務(wù)器在檢測到所述舊業(yè)務(wù)單元處于未被調(diào)用狀態(tài)后,刪除所述舊業(yè)務(wù)單元。
可選地,所述方法還包括:
所述目標(biāo)業(yè)務(wù)服務(wù)器容器中的業(yè)務(wù)管理模塊根據(jù)所述更新指令,解析所述待更新業(yè)務(wù)模塊中所述新業(yè)務(wù)單元的灰度值,所述灰度值指示了所述新業(yè)務(wù)單元對與指定號碼段對應(yīng)的業(yè)務(wù)請求進(jìn)行響應(yīng)。
可選地,所述方法還包括:
在業(yè)務(wù)監(jiān)控頁面上,至少展示系統(tǒng)中全部業(yè)務(wù)服務(wù)器的標(biāo)識信息和端口信息、容器的標(biāo)識信息和版本信息、業(yè)務(wù)單元的標(biāo)識信息和版本信息、業(yè)務(wù)單元的調(diào)用次數(shù);
在所述新業(yè)務(wù)單元的調(diào)用信息注冊至所述目標(biāo)業(yè)務(wù)服務(wù)器中容器的業(yè)務(wù)響應(yīng)模塊后,在所述業(yè)務(wù)監(jiān)控頁面上展示所述新業(yè)務(wù)單元的標(biāo)識信息和版本信息。
本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
業(yè)務(wù)管理服務(wù)器在檢測到更新指令后,向目標(biāo)業(yè)務(wù)服務(wù)器轉(zhuǎn)發(fā)更新指令,更新指令至少包括待更新業(yè)務(wù)模塊的業(yè)務(wù)標(biāo)識,目標(biāo)業(yè)務(wù)服務(wù)器用于提供與業(yè)務(wù)標(biāo)識對應(yīng)的業(yè)務(wù)處理;目標(biāo)業(yè)務(wù)服務(wù)器在接收到更新指令后,根據(jù)業(yè)務(wù)標(biāo)識從文件服務(wù)器獲取待更新業(yè)務(wù)模塊,并對待更新業(yè)務(wù)模塊進(jìn)行解析,得到新業(yè) 務(wù)單元的標(biāo)識信息、調(diào)用信息和版本信息;目標(biāo)業(yè)務(wù)服務(wù)器根據(jù)新業(yè)務(wù)單元的標(biāo)識信息將調(diào)用信息注冊至目標(biāo)業(yè)務(wù)服務(wù)器中容器的業(yè)務(wù)響應(yīng)模塊,以替換與標(biāo)識信息相同的舊業(yè)務(wù)單元的調(diào)用信息,使得后續(xù)響應(yīng)業(yè)務(wù)請求時直接調(diào)用新業(yè)務(wù)單元。由于在更新業(yè)務(wù)單元時,可在不停止服務(wù)的情況下完成更新,不會對相應(yīng)的業(yè)務(wù)請求造成影響,因此該種數(shù)據(jù)更新方式可在任意時間段進(jìn)行更新,靈活性高、更新時間短且步驟簡便。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1A是本發(fā)明實施例提供的一種數(shù)據(jù)更新系統(tǒng)的結(jié)構(gòu)示意圖;
圖1B是本發(fā)明實施例提供的一種業(yè)務(wù)服務(wù)器中的內(nèi)部結(jié)構(gòu)示意圖;
圖1C是本發(fā)明實施例提供的一種數(shù)據(jù)更新系統(tǒng)的結(jié)構(gòu)示意圖;
圖2是本發(fā)明實施例提供的一種數(shù)據(jù)交互流程圖;
圖3是本發(fā)明實施例提供的一種服務(wù)器的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
圖1A是本發(fā)明實施例提供的一種數(shù)據(jù)更新系統(tǒng)的結(jié)構(gòu)示意圖。如圖1A所示,該系統(tǒng)包括:文件服務(wù)器、至少一個業(yè)務(wù)服務(wù)器和業(yè)務(wù)管理服務(wù)器。
其中,文件服務(wù)器用于存儲待更新數(shù)據(jù)包,待更新數(shù)據(jù)包中包括待更新業(yè)務(wù)模塊;
業(yè)務(wù)服務(wù)器包括具有不同版本信息的多個容器和掛載至每一個容器上的至少一個業(yè)務(wù)模塊,每一個業(yè)務(wù)模塊包括至少一個業(yè)務(wù)單元,每一個容器中至少包括業(yè)務(wù)響應(yīng)模塊。業(yè)務(wù)服務(wù)器的容器中還包括業(yè)務(wù)管理模塊、上下文管理模 塊,該業(yè)務(wù)服務(wù)器還包括業(yè)務(wù)通用組件,該業(yè)務(wù)通信組件與業(yè)務(wù)模塊均處于系統(tǒng)中的業(yè)務(wù)環(huán)境。其中,該業(yè)務(wù)管理模塊為容器的核心功能包,可為feinno-app-master組件,提供對外的命令行接入控制,用于對容器內(nèi)包含的其他模塊進(jìn)行逐一啟動并注冊至容器中的上下文管理模塊。當(dāng)容器啟動完成后,該業(yè)務(wù)管理模塊還用于啟動業(yè)務(wù)模塊以及業(yè)務(wù)通用組件,并將二者注冊至容器中的上下文管理器中,該業(yè)務(wù)通用組件可為feinno-imps組件。該上下文管理模塊可為containercontext組件,用于管理業(yè)務(wù)單元的上下文對接,即其中存儲了該容器中所有業(yè)務(wù)單元的調(diào)用關(guān)系,明確了每一個業(yè)務(wù)單元的上游業(yè)務(wù)和下游業(yè)務(wù),保證了業(yè)務(wù)流程可正確執(zhí)行。此外該容器中的全部業(yè)務(wù)單元的標(biāo)識信息和調(diào)用信息均需注冊至業(yè)務(wù)響應(yīng)模塊中,以為業(yè)務(wù)請求提供對應(yīng)業(yè)務(wù)單元的調(diào)用入口。在進(jìn)行數(shù)據(jù)更新時,業(yè)務(wù)管理模塊用于根據(jù)更新指令解析待更新業(yè)務(wù)模塊中業(yè)務(wù)單元的灰度值,灰度值指示了業(yè)務(wù)單元對與指定號碼段對應(yīng)的業(yè)務(wù)請求進(jìn)行響應(yīng)。
需要說明的是,業(yè)務(wù)服務(wù)器的容器中還包括庫模塊、協(xié)議處理模塊、注冊管理模塊、業(yè)務(wù)引擎模塊和同步模塊,該五個模塊為業(yè)務(wù)管理模塊(feinno-app-master)和上下文管理模塊(containercontex)提供底層支撐,保證了業(yè)務(wù)服務(wù)器中各模塊的正常運(yùn)行。其中,該庫模塊可為feinno-lib組件,用于存儲函數(shù)的調(diào)用信息;該協(xié)議處理模塊可為feinno-common組件,用于對業(yè)務(wù)請求進(jìn)行協(xié)議處理;該注冊管理模塊可為feinno-ha組件,用于支撐業(yè)務(wù)管理模塊執(zhí)行對業(yè)務(wù)模塊和業(yè)務(wù)單元的注冊操作;業(yè)務(wù)引擎模塊可為feinno-app-engine,用于為系統(tǒng)中其他模塊的實現(xiàn)提供支撐;該同步模塊可為feinno-synczk,用于控制系統(tǒng)中的業(yè)務(wù)流程。如圖1B所示為業(yè)務(wù)服務(wù)器中的內(nèi)部結(jié)構(gòu)示意圖。
業(yè)務(wù)管理服務(wù)器具有配置管理、遠(yuǎn)程執(zhí)行、監(jiān)控等功能,可通過部署SaltStack實現(xiàn),提供命令行接口,通過獲取管理員在命令行輸入窗口中輸入的命令,便可執(zhí)行對系統(tǒng)業(yè)務(wù)的更新部署。業(yè)務(wù)管理服務(wù)器上配置有一個主控端(maser端)和多個被控端(minion端),每一個被控端與一個業(yè)務(wù)服務(wù)器對接。業(yè)務(wù)管理服務(wù)器用于通過主控端向任一被控端發(fā)送指令,進(jìn)而由任一被控端將指令傳送至與其對接的業(yè)務(wù)服務(wù)器。其中,業(yè)務(wù)服務(wù)器通過業(yè)務(wù)管理模塊接收業(yè)務(wù)管理服務(wù)器發(fā)送的指令。業(yè)務(wù)管理服務(wù)器還用于在檢測到更新指令后,向目標(biāo)業(yè)務(wù)服務(wù)器轉(zhuǎn)發(fā)該更新指令,該更新指令至少包括該待更新業(yè)務(wù)模塊的業(yè)務(wù)標(biāo)識,目 標(biāo)業(yè)務(wù)服務(wù)器用于提供與業(yè)務(wù)標(biāo)識對應(yīng)的業(yè)務(wù)處理。
目標(biāo)業(yè)務(wù)服務(wù)器,即正在更新業(yè)務(wù)模塊的業(yè)務(wù)服務(wù)器,用于在業(yè)務(wù)管理模塊接收到更新指令后,根據(jù)業(yè)務(wù)標(biāo)識從文件服務(wù)器獲取待更新業(yè)務(wù)模塊,并對待更新業(yè)務(wù)模塊進(jìn)行解析,得到新業(yè)務(wù)單元(即應(yīng)用)的標(biāo)識信息、調(diào)用信息和版本信息。業(yè)務(wù)管理模塊根據(jù)新業(yè)務(wù)單元的標(biāo)識信息將調(diào)用信息注冊至目標(biāo)業(yè)務(wù)服務(wù)器中容器的業(yè)務(wù)響應(yīng)模塊,以替換與新業(yè)務(wù)單元的標(biāo)識信息相同的舊業(yè)務(wù)單元的調(diào)用信息,使得后續(xù)響應(yīng)業(yè)務(wù)請求時直接調(diào)用新業(yè)務(wù)單元,該業(yè)務(wù)響應(yīng)模塊可為appcontainer。需要說明的是,目標(biāo)業(yè)務(wù)服務(wù)器在檢測到舊業(yè)務(wù)單元處于未被調(diào)用狀態(tài)后,可刪除舊業(yè)務(wù)單元,以減少內(nèi)存的占用。
需要說明的是,本發(fā)明實施例提供的系統(tǒng)為集群系統(tǒng),系統(tǒng)中的每一個業(yè)務(wù)服務(wù)器可包括多個容器,該多個容器分別具有不同的版本信息,為業(yè)務(wù)模塊提供處理不同業(yè)務(wù)請求的能力,比如若業(yè)務(wù)請求符合HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)協(xié)議規(guī)范,則該請求需要通過具有HTTP協(xié)議處理能力的容器來調(diào)用相應(yīng)的業(yè)務(wù)模塊進(jìn)行處理。每一個容器和每一個業(yè)務(wù)模塊均采用OSGI(Open Service Gateway Initiative,開放服務(wù)網(wǎng)關(guān)協(xié)議)規(guī)范進(jìn)行打包,得到容器bundle和業(yè)務(wù)bundle,每一個bundle由一個獨(dú)立的ClassLoader加載,使得在編碼階段就會保證不會有任何容器級bundle依賴業(yè)務(wù)bundle,這樣在更新業(yè)務(wù)模塊時,不會對其他業(yè)務(wù)模塊和容器產(chǎn)生影響,進(jìn)而能夠在更新完成之后,徹底刪除舊業(yè)務(wù)模塊,減少內(nèi)存的占用,提高更新的效率。
在本發(fā)明實施例中,該系統(tǒng)還包括分布式管理服務(wù)器和顯示裝置,如圖1C所示為本發(fā)明實施例一種數(shù)據(jù)更新系統(tǒng)的結(jié)構(gòu)示意圖,其中包括分布式管理服務(wù)器和顯示裝置。其中,該分布式管理服務(wù)器可通過部署分布式協(xié)調(diào)服務(wù)zookeeper來實現(xiàn),該分布式管理服務(wù)器中存儲有至少一個業(yè)務(wù)服務(wù)器的節(jié)點(diǎn)信息,節(jié)點(diǎn)信息至少包括業(yè)務(wù)服務(wù)器的標(biāo)識信息、端口信息、容器的標(biāo)識信息和版本信息、業(yè)務(wù)單元的標(biāo)識信息和版本信息、業(yè)務(wù)單元的調(diào)用次數(shù);當(dāng)更新業(yè)務(wù)模塊時,在新業(yè)務(wù)單元的調(diào)用信息注冊至目標(biāo)業(yè)務(wù)服務(wù)器的業(yè)務(wù)響應(yīng)模塊后,將新業(yè)務(wù)單元的標(biāo)識信息和版本信息注冊至分布式管理服務(wù)器中,即注冊至zookeeper中,并刪除zookeeper中與新業(yè)務(wù)單元的標(biāo)識信息相同的舊業(yè)務(wù)單元的標(biāo)識信息和版本信息,終止該舊業(yè)務(wù)單元提供的服務(wù)。這樣,由于舊業(yè)務(wù)單元在zookeeper中沒有節(jié)點(diǎn)信息,因此系統(tǒng)對接的業(yè)務(wù)請求,訪問的都是新業(yè)務(wù) 單元。當(dāng)對處于等待調(diào)用狀態(tài)或處于被調(diào)用狀態(tài)的舊業(yè)務(wù)單元的調(diào)用都結(jié)束后,刪除該舊業(yè)務(wù)單元。之后再從上下文管理器containercontext中刪除該舊業(yè)務(wù)單元的注冊信息。
其中該顯示裝置用于顯示業(yè)務(wù)監(jiān)控頁面,業(yè)務(wù)監(jiān)控頁面至少展示了系統(tǒng)中全部業(yè)務(wù)服務(wù)器的標(biāo)識信息、端口信息、容器的標(biāo)識信息和版本信息、業(yè)務(wù)單元的標(biāo)識信息和版本信息、業(yè)務(wù)單元的調(diào)用次數(shù);在新業(yè)務(wù)單元的調(diào)用信息注冊至目標(biāo)業(yè)務(wù)服務(wù)器的業(yè)務(wù)響應(yīng)模塊后,在業(yè)務(wù)監(jiān)控頁面上展示新業(yè)務(wù)單元的標(biāo)識信息和版本信息。
圖2是結(jié)合圖1A、圖1B和圖1C所示的數(shù)據(jù)更新系統(tǒng)提供的一種數(shù)據(jù)交互流程圖,參見圖2,本發(fā)明實施例提供的數(shù)據(jù)交互流程包括:
201、業(yè)務(wù)管理服務(wù)器在檢測到更新指令后,向目標(biāo)業(yè)務(wù)服務(wù)器轉(zhuǎn)發(fā)該更新指令。
在本發(fā)明實施例中,在對系統(tǒng)管理的過程中,需要對系統(tǒng)中原有的業(yè)務(wù)單元進(jìn)行修改、替換或者添加新的業(yè)務(wù)單元,比如系統(tǒng)中出現(xiàn)漏洞、業(yè)務(wù)邏輯發(fā)生變化、傳輸協(xié)議發(fā)生變化、添加新的功能等,本發(fā)明實施例對此不進(jìn)行具體限定。為了區(qū)分不同的業(yè)務(wù)單元并便于管理,一般會對每一個業(yè)務(wù)單元標(biāo)注其版本信息,具有同一個標(biāo)識信息的業(yè)務(wù)單元可具有不同的版本信息。
在進(jìn)行數(shù)據(jù)更新時,首先需要開發(fā)人員通過計算機(jī)將待更新數(shù)據(jù)包上傳至文件服務(wù)器,該待更新數(shù)據(jù)包中可包含多個待更新業(yè)務(wù)模塊。之后,運(yùn)維人員可通過顯示設(shè)備調(diào)用業(yè)務(wù)管理服務(wù)的命令行輸入窗口,并在其中輸入更新指令,該更新指令中包括待更新數(shù)據(jù)包的標(biāo)識信息,該待更新數(shù)據(jù)包的標(biāo)識信息中至少包括該待更新數(shù)據(jù)包的包名和存儲路徑。業(yè)務(wù)管理服務(wù)器在檢測到更新指令后,根據(jù)其中包含的待更新數(shù)據(jù)包的包名和存儲路徑,讀取文件服務(wù)器中對應(yīng)的待更新數(shù)據(jù)包。之后,對該待更新數(shù)據(jù)包進(jìn)行解析,得到多個業(yè)務(wù)模塊的業(yè)務(wù)標(biāo)識。對于每一個業(yè)務(wù)模塊的業(yè)務(wù)標(biāo)識,業(yè)務(wù)管理服務(wù)器會在配置管理列表中獲取與該業(yè)務(wù)模塊的業(yè)務(wù)標(biāo)識對應(yīng)的目標(biāo)業(yè)務(wù)服務(wù)器的標(biāo)識信息,并向該目標(biāo)業(yè)務(wù)服務(wù)器的標(biāo)識信息對應(yīng)的目標(biāo)業(yè)務(wù)服務(wù)器轉(zhuǎn)發(fā)更新指令。其中配置管理列表中存儲了業(yè)務(wù)服務(wù)器的標(biāo)識信息和業(yè)務(wù)模塊的業(yè)務(wù)標(biāo)識之間的對應(yīng)關(guān)系。
需要說明的是,在業(yè)務(wù)管理服務(wù)器獲取到與業(yè)務(wù)標(biāo)識對應(yīng)的目標(biāo)業(yè)務(wù)服務(wù) 器的標(biāo)識信息后,將該業(yè)務(wù)標(biāo)識添加至上述更新指令中,其中該業(yè)務(wù)標(biāo)識中至少包括該待更新業(yè)務(wù)模塊的存儲路徑。之后,業(yè)務(wù)管理服務(wù)器通過與該目標(biāo)業(yè)務(wù)服務(wù)器的標(biāo)識信息匹配的被控端,向目標(biāo)業(yè)務(wù)服務(wù)器轉(zhuǎn)發(fā)該更新指令。若待更新數(shù)據(jù)包中的待更新業(yè)務(wù)模塊為新添加的業(yè)務(wù)模塊,即當(dāng)前全部業(yè)務(wù)管理服務(wù)器上均不存在與該待更新業(yè)務(wù)模塊的業(yè)務(wù)標(biāo)識對應(yīng)的業(yè)務(wù)模塊,則可在該待更新業(yè)務(wù)模塊中直接添加與其對應(yīng)的業(yè)務(wù)服務(wù)器的標(biāo)識信息,也可在業(yè)務(wù)管理服務(wù)器中預(yù)先添加該待更新業(yè)務(wù)模塊的業(yè)務(wù)標(biāo)識與業(yè)務(wù)服務(wù)器的標(biāo)識信息之間的對應(yīng)關(guān)系,本發(fā)明實施例對此不進(jìn)行具體限定。
需要說明的是,由于待更新數(shù)據(jù)包中可能包含多個待更新業(yè)務(wù)模塊,而該多個待更新業(yè)務(wù)模塊可能需要更新到不同的業(yè)務(wù)服務(wù)器,即該多個待更新業(yè)務(wù)模塊對應(yīng)不同的目標(biāo)業(yè)務(wù)服務(wù)器,本發(fā)明實施例僅以一個目標(biāo)業(yè)務(wù)服務(wù)器的數(shù)據(jù)更新過程為例進(jìn)行解釋說明。
202、目標(biāo)業(yè)務(wù)服務(wù)器在接收到更新指令后,根據(jù)業(yè)務(wù)標(biāo)識從文件服務(wù)器中獲取對應(yīng)的待更新業(yè)務(wù)模塊,并對該待更新業(yè)務(wù)模塊進(jìn)行解析,得到新業(yè)務(wù)單元的標(biāo)識信息、調(diào)用信息和版本信息。
在本發(fā)明實施例中,目標(biāo)業(yè)務(wù)服務(wù)器通過容器中的業(yè)務(wù)管理模塊接收業(yè)務(wù)管理服務(wù)器發(fā)送的更新指令,并根據(jù)更新指令中業(yè)務(wù)標(biāo)識指示的待更新業(yè)務(wù)模塊的存儲路徑,從文件服務(wù)器中下載相應(yīng)的待更新業(yè)務(wù)模塊至目標(biāo)業(yè)務(wù)服務(wù)器中。之后,業(yè)務(wù)管理模塊對該待更新業(yè)務(wù)模塊進(jìn)行解析,得到新業(yè)務(wù)單元的標(biāo)識信息、調(diào)用信息和版本信息。其中,待更新業(yè)務(wù)模塊中可包括多個新業(yè)務(wù)單元也可包括一個新業(yè)務(wù)單元,本發(fā)明實施例對此不進(jìn)行具體限定。業(yè)務(wù)單元的調(diào)用信息用于提供該業(yè)務(wù)單元的調(diào)用入口,版本信息用于區(qū)分具有相同標(biāo)識信息的業(yè)務(wù)單元。
203、目標(biāo)業(yè)務(wù)服務(wù)器根據(jù)新業(yè)務(wù)單元的標(biāo)識信息將該調(diào)用信息注冊至業(yè)務(wù)響應(yīng)模塊,并將新業(yè)務(wù)單元的標(biāo)識信息和版本信息注冊至分布式管理服務(wù)器。
在本發(fā)明實施例中,在業(yè)務(wù)管理模塊對待更新業(yè)務(wù)模塊進(jìn)行解析后,對于待更新模塊中的每一個新業(yè)務(wù)單元,將該新業(yè)務(wù)單元的調(diào)用信息注冊至業(yè)務(wù)響應(yīng)模塊,以替換與該新業(yè)務(wù)單元的標(biāo)識信息相同的舊業(yè)務(wù)單元的調(diào)用信息,使得后續(xù)響應(yīng)業(yè)務(wù)請求時直接調(diào)用該新業(yè)務(wù)單元。在根據(jù)新業(yè)務(wù)單元進(jìn)行更新時,業(yè)務(wù)管理模塊首先在業(yè)務(wù)響應(yīng)模塊中查找,是否存在與該新業(yè)務(wù)單元匹配的注 冊信息,即是否存在與該新業(yè)務(wù)單元的標(biāo)識信息匹配的舊業(yè)務(wù)單元的調(diào)用信息。若存在,則將新業(yè)務(wù)單元的調(diào)用信息直接將該舊業(yè)務(wù)單元的調(diào)用信息替換掉。由于在業(yè)務(wù)響應(yīng)模塊中,與業(yè)務(wù)單元匹配的調(diào)用信息是唯一的,因此當(dāng)新業(yè)務(wù)單元的調(diào)用信息注冊至業(yè)務(wù)響應(yīng)模塊后,若接收到相應(yīng)的業(yè)務(wù)請求,則可直接調(diào)用該新業(yè)務(wù)單元進(jìn)行響應(yīng),因此該業(yè)務(wù)單元的更新過程中無需先停止該業(yè)務(wù)單元提供的服務(wù),再通過重啟提供新的服務(wù),此過程對用戶來說是無感知的,不會影響用戶的使用。其中,業(yè)務(wù)響應(yīng)模塊中存儲的注冊信息可通過一一映射的Map函數(shù)實現(xiàn),也可通過其他方式實現(xiàn),本發(fā)明實施例對此不進(jìn)行具體限定。
需要說明的是,若業(yè)務(wù)管理模塊未在業(yè)務(wù)響應(yīng)模塊中查找到與某一新業(yè)務(wù)單元的標(biāo)識信息匹配的舊業(yè)務(wù)單元的調(diào)用信息,則確定該新業(yè)務(wù)單元為新添加的業(yè)務(wù)單元,直接將該新業(yè)務(wù)單元的調(diào)用信息添加至業(yè)務(wù)響應(yīng)模塊中。
需要說明的是,目標(biāo)業(yè)務(wù)服務(wù)器在將新業(yè)務(wù)單元注冊至業(yè)務(wù)響應(yīng)模塊后,為了便于系統(tǒng)的分布式管理,還需將該新業(yè)務(wù)單元注冊至分布式管理服務(wù)器,即:目標(biāo)業(yè)務(wù)服務(wù)器在將新業(yè)務(wù)單元注冊至業(yè)務(wù)響應(yīng)模塊后,將該新業(yè)務(wù)單元的添加消息發(fā)送至分布式管理服務(wù)器,其中該添加消息中至少包括該新業(yè)務(wù)單元的標(biāo)識信息和版本信息;分布式管理服務(wù)器根據(jù)接收到的添加消息,將新業(yè)務(wù)單元的標(biāo)識信息和版本信息作為注冊信息存儲起來。
需要說明的是,在對系統(tǒng)中的業(yè)務(wù)單元進(jìn)行更新時,為了保證新業(yè)務(wù)單元能夠正確響應(yīng)業(yè)務(wù)請求,可先對該新業(yè)務(wù)單元的功能進(jìn)行測試,即將該新業(yè)務(wù)單元對應(yīng)的服務(wù)先提供給部分用戶,待該部分用戶的業(yè)務(wù)請求均得到正確響應(yīng)后,在將該新業(yè)務(wù)單元對應(yīng)的服務(wù)提供給全部用戶。為了實現(xiàn)上述需求,本發(fā)明實施例提供了灰度機(jī)制,即開發(fā)人員可在新業(yè)務(wù)單元中設(shè)置該新業(yè)務(wù)單元的灰度值,該灰度值可為指定號碼段,指示了該新業(yè)務(wù)單元僅對與指定號碼段對應(yīng)的業(yè)務(wù)請求進(jìn)行響應(yīng)。在業(yè)務(wù)管理模塊對待更新業(yè)務(wù)模塊進(jìn)行解析時,若新業(yè)務(wù)單元中包含灰度值,則將該灰度值進(jìn)行存儲。當(dāng)業(yè)務(wù)服務(wù)器在接收到業(yè)務(wù)請求后,若檢測到與該業(yè)務(wù)請求對應(yīng)的新業(yè)務(wù)單元設(shè)置了灰度值,則判斷該業(yè)務(wù)請求對應(yīng)的號碼是否包含在灰度值指示的指定號碼段中,若是,則對該業(yè)務(wù)請求進(jìn)行響應(yīng);若不是,則不對該業(yè)務(wù)請求進(jìn)行響應(yīng)。
204、顯示裝置在新業(yè)務(wù)單元的調(diào)用信息注冊至目標(biāo)業(yè)務(wù)服務(wù)器中容器的業(yè)務(wù)響應(yīng)模塊后,從分布式管理服務(wù)器獲取該新業(yè)務(wù)單元的標(biāo)識信息和版本信息, 并在業(yè)務(wù)監(jiān)控頁面上展示該新業(yè)務(wù)單元的標(biāo)識信息和版本信息。
在本發(fā)明實施例中,為了實時監(jiān)控系統(tǒng)的狀態(tài),以便更好的對系統(tǒng)進(jìn)行管理和維護(hù),提供了顯示裝置,并且在該顯示裝置的業(yè)務(wù)監(jiān)控頁面上,展示了系統(tǒng)中全部業(yè)務(wù)服務(wù)器的標(biāo)識信息和端口信息、容器的標(biāo)識信息和版本信息、業(yè)務(wù)單元的標(biāo)識信息和版本信息、業(yè)務(wù)單元的調(diào)用次數(shù)。其中,業(yè)務(wù)服務(wù)器的標(biāo)識信息可為業(yè)務(wù)服務(wù)器的物理地址;通過業(yè)務(wù)服務(wù)器的端口信息可獲知該業(yè)務(wù)服務(wù)器在進(jìn)行不同的數(shù)據(jù)傳輸時使用的不同端口;業(yè)務(wù)單元的調(diào)用次數(shù)指示了該業(yè)務(wù)單元響應(yīng)業(yè)務(wù)請求的次數(shù),可包括響應(yīng)成功的次數(shù)和響應(yīng)失敗的次數(shù)。
需要說明的是,該顯示裝置可與分布式管理服務(wù)器相連接,該業(yè)務(wù)監(jiān)控頁面上展示的信息,可通過讀取分布式管理服務(wù)器中存儲的業(yè)務(wù)服務(wù)器的節(jié)點(diǎn)信息來獲取。當(dāng)新業(yè)務(wù)單元的調(diào)用信息注冊至目標(biāo)業(yè)務(wù)服務(wù)器中容器的業(yè)務(wù)響應(yīng)模塊后,根據(jù)步驟203可知,分布式管理服務(wù)器中會注冊該新業(yè)務(wù)單元的標(biāo)識信息和版本信息,該顯示裝置可向分布式服務(wù)器讀取新業(yè)務(wù)單元的標(biāo)識信息和版本信息,并將讀取的信息展示在業(yè)務(wù)監(jiān)控頁面上。此外,在該業(yè)務(wù)監(jiān)控頁面上還可提供查詢功能,通過該查詢功能獲取指定業(yè)務(wù)服務(wù)器的信息或指定業(yè)務(wù)單元的信息,本發(fā)明實施例對此不進(jìn)行具體限定。當(dāng)顯示裝置檢測到業(yè)務(wù)監(jiān)控頁面上查詢按鈕的點(diǎn)擊操作時,獲取待查詢信息;該顯示裝置將該待查詢信息發(fā)送至分布式管理服務(wù)器,由分布式管理服務(wù)器返回與該待查詢信息匹配的結(jié)果。其中該待查詢信息可為業(yè)務(wù)單元的標(biāo)識信息,業(yè)務(wù)服務(wù)器的端口信息等,本發(fā)明實施例對此不進(jìn)行具體限定。比如,若該待查詢信息為業(yè)務(wù)單元的標(biāo)識信息,則分布式管理服務(wù)器返回與該標(biāo)識信息匹配的業(yè)務(wù)單元的標(biāo)識信息、版本信息、調(diào)用次數(shù)等。
205、目標(biāo)業(yè)務(wù)服務(wù)器在檢測到舊業(yè)務(wù)單元處于未被調(diào)用狀態(tài)后,刪除該舊業(yè)務(wù)單元。
在本發(fā)明實施例中,在將新業(yè)務(wù)單元的調(diào)用信息注冊到業(yè)務(wù)響應(yīng)模塊之后,與其對應(yīng)的舊業(yè)務(wù)單元可能還處于被調(diào)用的狀態(tài),此時為了保證能夠正常響應(yīng)業(yè)務(wù)請求,還需在業(yè)務(wù)服務(wù)器中保留該舊業(yè)務(wù)單元。當(dāng)業(yè)務(wù)服務(wù)器檢測到該舊業(yè)務(wù)單元由被調(diào)用狀態(tài)轉(zhuǎn)換為未被調(diào)用狀態(tài)后,將該舊業(yè)務(wù)單元刪除,以保證該舊業(yè)務(wù)單元不占用內(nèi)存,避免在業(yè)務(wù)單元不斷更新的過程中造成內(nèi)存的不斷增加,進(jìn)而影響更新的效率。
需要說明的是,在目標(biāo)業(yè)務(wù)服務(wù)器刪除該舊業(yè)務(wù)模塊后,還需在分布式管理服務(wù)器中將該舊業(yè)務(wù)模塊的注冊信息刪除,即:目標(biāo)業(yè)務(wù)服務(wù)器在刪除該舊業(yè)務(wù)模塊后,將該舊業(yè)務(wù)單元的刪除消息發(fā)送至分布式管理服務(wù)器,其中刪除消息中至少包括該舊業(yè)務(wù)單元的標(biāo)識信息和版本信息;分布式管理服務(wù)器在接收到刪除消息后,根據(jù)刪除消息中包含的舊業(yè)務(wù)單元的標(biāo)識信息,將該舊業(yè)務(wù)單元的注冊信息刪除。
本發(fā)明實施例提供的系統(tǒng)及方法,業(yè)務(wù)管理服務(wù)器在檢測到更新指令后,向目標(biāo)業(yè)務(wù)服務(wù)器轉(zhuǎn)發(fā)更新指令,更新指令至少包括待更新業(yè)務(wù)模塊的業(yè)務(wù)標(biāo)識,目標(biāo)業(yè)務(wù)服務(wù)器用于提供與業(yè)務(wù)標(biāo)識對應(yīng)的業(yè)務(wù)處理;目標(biāo)業(yè)務(wù)服務(wù)器在接收到更新指令后,根據(jù)業(yè)務(wù)標(biāo)識從文件服務(wù)器獲取待更新業(yè)務(wù)模塊,并對待更新業(yè)務(wù)模塊進(jìn)行解析,得到新業(yè)務(wù)單元的標(biāo)識信息、調(diào)用信息和版本信息;目標(biāo)業(yè)務(wù)服務(wù)器根據(jù)新業(yè)務(wù)單元的標(biāo)識信息將調(diào)用信息注冊至目標(biāo)業(yè)務(wù)服務(wù)器中容器的業(yè)務(wù)響應(yīng)模塊,以替換與標(biāo)識信息相同的舊業(yè)務(wù)單元的調(diào)用信息,使得后續(xù)響應(yīng)業(yè)務(wù)請求時直接調(diào)用新業(yè)務(wù)單元。由于在更新業(yè)務(wù)單元時,可在不停止服務(wù)的情況下完成更新,不會對相應(yīng)的業(yè)務(wù)請求造成影響,因此該種數(shù)據(jù)更新方式可在任意時間段進(jìn)行更新,靈活性高、更新時間短且步驟簡便。
圖3是本發(fā)明實施例提供的一種服務(wù)器的結(jié)構(gòu)示意圖。參照圖3,服務(wù)器300包括處理組件322,其進(jìn)一步包括一個或多個處理器,以及由存儲器332所代表的存儲器資源,用于存儲可由處理部件322的執(zhí)行的指令,例如應(yīng)用程序。存儲器332中存儲的應(yīng)用程序可以包括一個或一個以上的每一個對應(yīng)于一組指令的模塊。此外,處理組件322被配置為執(zhí)行指令,以執(zhí)行上述數(shù)據(jù)更新方法。
服務(wù)器300還可以包括一個電源組件326被配置為執(zhí)行服務(wù)器300的電源管理,一個有線或無線網(wǎng)絡(luò)接口350被配置為將服務(wù)器300連接到網(wǎng)絡(luò),和一個輸入輸出(I/O)接口358。服務(wù)器300可以操作基于存儲在存儲器332的操作系統(tǒng),例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM或類似。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于 一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。