本技術(shù)涉及云計(jì)算,特別涉及一種微服務(wù)系統(tǒng)、全鏈路灰度發(fā)布方法及全鏈路灰度實(shí)現(xiàn)方法。
背景技術(shù):
1、在微服務(wù)系統(tǒng)中,微服務(wù)之間的關(guān)系錯(cuò)綜復(fù)雜,某個(gè)功能的實(shí)現(xiàn)往往依賴于多個(gè)微服務(wù),這就需要對多個(gè)微服務(wù)的新版本進(jìn)行發(fā)布。為了更全面地評估新版本與系統(tǒng)的兼容性和穩(wěn)定性,可以對這些微服務(wù)的新版本進(jìn)行全鏈路灰度發(fā)布,即先對新版本的微服務(wù)進(jìn)行小流量的灰度驗(yàn)證,當(dāng)新版本的微服務(wù)通過驗(yàn)證后,再將新版本的微服務(wù)在整個(gè)系統(tǒng)上部署。
2、然而,如何在微服務(wù)系統(tǒng)中實(shí)現(xiàn)全鏈路灰度發(fā)布,讓新版本作為灰度版本,接受較小比例的流量,成為當(dāng)前亟需解決的問題。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例提供了一種微服務(wù)系統(tǒng)、全鏈路灰度發(fā)布方法及全鏈路灰度實(shí)現(xiàn)方法,能夠提供一種全鏈路灰度發(fā)布方法。所述技術(shù)方案如下:
2、第一方面,提供了一種微服務(wù)系統(tǒng),所述系統(tǒng)包括:微服務(wù)管控平臺(tái)、注冊中心及目標(biāo)服務(wù)節(jié)點(diǎn),所述目標(biāo)服務(wù)節(jié)點(diǎn)上運(yùn)行有能夠提供目標(biāo)微服務(wù)的不同版本的微服務(wù)實(shí)例;
3、所述微服務(wù)管控平臺(tái)用于接收針對所述目標(biāo)微服務(wù)的灰度發(fā)布指令,所述灰度發(fā)布指令包括所述目標(biāo)微服務(wù)的灰度版本和灰度調(diào)度策略信息;響應(yīng)于所述灰度發(fā)布指令,基于所述灰度版本,在所述目標(biāo)服務(wù)節(jié)點(diǎn)上創(chuàng)建所述目標(biāo)微服務(wù)對應(yīng)的目標(biāo)灰度微服務(wù)實(shí)例,為所述目標(biāo)灰度微服務(wù)實(shí)例創(chuàng)建目標(biāo)灰度服務(wù)代理,將所述灰度調(diào)度策略信息提供給所述目標(biāo)灰度服務(wù)代理;
4、所述目標(biāo)灰度微服務(wù)實(shí)例用于在重啟后,通過所述目標(biāo)灰度服務(wù)代理,向所述注冊中心發(fā)送灰度注冊請求,所述灰度注冊請求包括所述灰度調(diào)度策略信息和所述灰度版本的服務(wù)元數(shù)據(jù);
5、所述注冊中心用于響應(yīng)于所述灰度注冊請求,基于所述灰度調(diào)度策略信息和所述服務(wù)元數(shù)據(jù),對所述目標(biāo)灰度微服務(wù)實(shí)例進(jìn)行注冊,并為所述目標(biāo)灰度微服務(wù)實(shí)例添加灰度標(biāo)簽,以實(shí)現(xiàn)所述目標(biāo)微服務(wù)的灰度發(fā)布。
6、第二方面,提供了一種全鏈路灰度發(fā)布方法,所述方法應(yīng)用于第一方面所述的微服務(wù)系統(tǒng),所述方法包括:
7、所述微服務(wù)管控平臺(tái)接收針對所述目標(biāo)微服務(wù)的灰度發(fā)布指令,所述灰度發(fā)布指令包括所述目標(biāo)微服務(wù)的灰度版本和灰度調(diào)度策略信息;響應(yīng)于所述灰度發(fā)布指令,基于所述灰度版本,在所述目標(biāo)服務(wù)節(jié)點(diǎn)上創(chuàng)建所述目標(biāo)微服務(wù)對應(yīng)的目標(biāo)灰度微服務(wù)實(shí)例,為所述目標(biāo)灰度微服務(wù)實(shí)例創(chuàng)建目標(biāo)灰度服務(wù)代理,將所述灰度調(diào)度策略信息提供給所述目標(biāo)灰度服務(wù)代理;
8、所述目標(biāo)灰度微服務(wù)實(shí)例在重啟后,通過所述目標(biāo)灰度服務(wù)代理,向所述注冊中心發(fā)送灰度注冊請求,所述灰度注冊請求包括所述灰度調(diào)度策略信息和所述灰度版本的服務(wù)元數(shù)據(jù);
9、所述注冊中心響應(yīng)于所述灰度注冊請求,基于所述灰度調(diào)度策略信息和所述服務(wù)元數(shù)據(jù),對所述目標(biāo)灰度微服務(wù)實(shí)例進(jìn)行注冊,并為所述目標(biāo)灰度微服務(wù)實(shí)例添加灰度標(biāo)簽,以實(shí)現(xiàn)所述目標(biāo)微服務(wù)的灰度發(fā)布。
10、第三方面,提供了一種全鏈路灰度實(shí)現(xiàn)方法,所述方法應(yīng)用于第一方面所述的微服務(wù)系統(tǒng),所述方法包括:
11、微服務(wù)網(wǎng)關(guān)接收第一外部訪問請求,所述第一外部訪問請求對應(yīng)的服務(wù)路徑包括所述目標(biāo)服務(wù)節(jié)點(diǎn);從所述注冊中心獲取所述灰度調(diào)度策略信息,基于所述灰度調(diào)度策略信息,識別所述第一外部訪問請求的類型,當(dāng)識別出所述第一外部訪問請求的類型為灰度請求,在所述第一外部訪問請求中添加灰度標(biāo)識,得到第二外部訪問請求,將所述第二外部訪問請求發(fā)送給第一服務(wù)節(jié)點(diǎn)上的第一灰度微服務(wù)實(shí)例,所述第一服務(wù)節(jié)點(diǎn)為所述服務(wù)路徑包括的第一個(gè)服務(wù)節(jié)點(diǎn);
12、所述第一灰度微服務(wù)實(shí)例通過第一灰度服務(wù)代理接收所述第二外部訪問請求,響應(yīng)于所述第二訪問請求提供相應(yīng)微服務(wù)。
13、第四方面,提供了一種全鏈路灰度實(shí)現(xiàn)方法,所述方法應(yīng)用于第一方面所述的微服務(wù)系統(tǒng),所述方法包括:
14、微服務(wù)網(wǎng)關(guān)接收第一外部訪問請求,所述第一外部訪問請求對應(yīng)的服務(wù)路徑包括所述目標(biāo)服務(wù)節(jié)點(diǎn);從所述注冊中心獲取所述灰度調(diào)度策略信息,基于所述灰度調(diào)度策略信息,識別所述第一外部訪問請求的類型,當(dāng)識別出所述第一外部訪問請求的類型為灰度請求,在所述第一外部訪問請求中添加灰度標(biāo)識,得到第二外部訪問請求,將所述第二外部訪問請求發(fā)送給第一服務(wù)節(jié)點(diǎn)上的第一灰度微服務(wù)實(shí)例,所述第一服務(wù)節(jié)點(diǎn)為所述服務(wù)路徑包括的第一個(gè)服務(wù)節(jié)點(diǎn);
15、所述第一灰度微服務(wù)實(shí)例通過所述第一灰度服務(wù)代理接收所述第二外部訪問請求,在所述第二外部訪問請求中添加灰度標(biāo)識,得到第三外部訪問請求,響應(yīng)于所述第三外部訪問請求提供相應(yīng)微服務(wù)。
16、第五方面,提供了一種全鏈路灰度實(shí)現(xiàn)方法,所述方法應(yīng)用于第一方面所述的微服務(wù)系統(tǒng),所述方法包括:
17、分布式調(diào)度平臺(tái)在達(dá)到定時(shí)灰度任務(wù)的執(zhí)行時(shí)間時(shí),生成定時(shí)訪問請求;
18、在所述定時(shí)訪問請求的傳遞過程中,對于所述定時(shí)訪問請求對應(yīng)的服務(wù)路徑上的任一服務(wù)節(jié)點(diǎn),所述分布式調(diào)度平臺(tái)接收所述服務(wù)節(jié)點(diǎn)上運(yùn)行的微服務(wù)實(shí)例通過相應(yīng)服務(wù)代理發(fā)送的第一心跳消息,所述第一心跳消息包括相應(yīng)微服務(wù)實(shí)例的標(biāo)簽和灰度調(diào)度策略信息;
19、當(dāng)基于所述服務(wù)節(jié)點(diǎn)上運(yùn)行的微服務(wù)實(shí)例的標(biāo)簽確定所述服務(wù)節(jié)點(diǎn)上存在灰度微服務(wù)實(shí)例,且所述服務(wù)節(jié)點(diǎn)上的灰度微服務(wù)實(shí)例符合相應(yīng)灰度調(diào)度策略信息指示的灰度調(diào)度條件,所述分布式調(diào)度平臺(tái)控制所述服務(wù)節(jié)點(diǎn)的上一節(jié)點(diǎn)將所述定時(shí)訪問請求發(fā)送給所述服務(wù)節(jié)點(diǎn)上的灰度微服務(wù)實(shí)例。
20、第六方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有至少一條計(jì)算機(jī)程序,所述至少一條計(jì)算機(jī)程序被處理器執(zhí)行時(shí)能夠?qū)崿F(xiàn)第一方面所述的全鏈路灰度發(fā)布方法,或第二方面所述的全鏈路灰度實(shí)現(xiàn)方法,或第三方面所述的全鏈路灰度實(shí)現(xiàn)方法,或第四方面所述的全鏈路灰度實(shí)現(xiàn)方法。
21、第七方面,提供了一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)能夠?qū)崿F(xiàn)第一方面所述的全鏈路灰度發(fā)布方法,或第二方面所述的全鏈路灰度實(shí)現(xiàn)方法,或第三方面所述的全鏈路灰度實(shí)現(xiàn)方法,或第四方面所述的全鏈路灰度實(shí)現(xiàn)方法。
22、本技術(shù)實(shí)施例提供的技術(shù)方案帶來的有益效果是:
23、本技術(shù)提供了一種微服務(wù)系統(tǒng),該微服務(wù)系統(tǒng)包括微服務(wù)管控平臺(tái)、注冊中心及目標(biāo)服務(wù)節(jié)點(diǎn)等,該目標(biāo)服務(wù)節(jié)點(diǎn)上運(yùn)行有能夠提供目標(biāo)微服務(wù)的不同版本的微服務(wù)實(shí)例。當(dāng)目標(biāo)微服務(wù)有新版本需要發(fā)布時(shí),用戶可以向微服務(wù)管控平臺(tái)發(fā)送針對目標(biāo)微服務(wù)的灰度發(fā)布指令,該灰度發(fā)布指令包括目標(biāo)微服務(wù)的灰度版本和灰度調(diào)度策略信息,該灰度調(diào)度策略信息用于指示對目標(biāo)微服務(wù)的灰度版本的灰度調(diào)度條件,當(dāng)符合該灰度調(diào)度條件時(shí),可以調(diào)用目標(biāo)微服務(wù)的灰度版本。微服務(wù)管控平臺(tái)接收針對目標(biāo)微服務(wù)的灰度發(fā)布指令,響應(yīng)于該灰度發(fā)布指令,基于目標(biāo)微服務(wù)的灰度版本,在目標(biāo)服務(wù)節(jié)點(diǎn)上創(chuàng)建目標(biāo)微服務(wù)對應(yīng)的目標(biāo)灰度微服務(wù)實(shí)例,進(jìn)而在目標(biāo)灰度微服務(wù)實(shí)例中創(chuàng)建目標(biāo)灰度服務(wù)代理,然后將該灰度調(diào)度策略信息提供給目標(biāo)灰度服務(wù)代理,目標(biāo)灰度服務(wù)代理通過將灰度調(diào)度策略信息和灰度版本的服務(wù)元數(shù)據(jù)發(fā)送給注冊中心,進(jìn)而在注冊中心對目標(biāo)灰度微服務(wù)實(shí)例進(jìn)行注冊,并在注冊完成后為目標(biāo)灰度微服務(wù)實(shí)例添加灰度標(biāo)簽,從而實(shí)現(xiàn)目標(biāo)微服務(wù)的新版本的全鏈路灰度發(fā)布。