本申請實施例涉及計算機(jī),尤其涉及一種故障注入方法及裝置、計算機(jī)設(shè)備、計算機(jī)可讀存儲介質(zhì)、計算機(jī)程序產(chǎn)品。
背景技術(shù):
1、隨著云原生技術(shù)的持續(xù)發(fā)展和廣泛應(yīng)用,微服務(wù)系統(tǒng)的規(guī)模、復(fù)雜度邁入了一個新的階段,微服務(wù)系統(tǒng)的穩(wěn)定性和可用性不斷受到挑戰(zhàn)。
2、為了提升微服務(wù)系統(tǒng)的穩(wěn)定性和可用性,在系統(tǒng)的測試階段,我們通過向系統(tǒng)人為地注入故障,檢測系統(tǒng)面對異常時的處理情況,進(jìn)而我們可以根據(jù)檢測的情況調(diào)整和完善系統(tǒng),以減少系統(tǒng)在正式使用時出現(xiàn)的異常問題。
3、然而,發(fā)明人發(fā)現(xiàn),現(xiàn)有的微服務(wù)系統(tǒng)中的多個微服務(wù)通常是采用不同的開發(fā)語言進(jìn)行開發(fā)的。這樣,當(dāng)對這種微服務(wù)系統(tǒng)進(jìn)行故障注入時,需要為不同的開發(fā)語言都維護(hù)一套故障注入的agent代碼,導(dǎo)致這種故障注入方式擴(kuò)展性不好,且復(fù)雜性高。
4、需要說明的是,上述內(nèi)容并不必然是現(xiàn)有技術(shù),也不用于限制本申請的專利保護(hù)范圍。
技術(shù)實現(xiàn)思路
1、本申請實施例提供一種故障注入方法、裝置、計算機(jī)設(shè)備、計算機(jī)可讀存儲介質(zhì)、計算機(jī)程序產(chǎn)品,以解決或緩解上面提出的一項或更多項技術(shù)問題。
2、本申請實施例的一個方面提供了一種故障注入方法,用于微服務(wù)系統(tǒng)中,所述微服務(wù)系統(tǒng)中部署有觀測性系統(tǒng)及服務(wù)網(wǎng)格系統(tǒng),所述微服務(wù)系統(tǒng)包括多個微服務(wù),所述方法包括:
3、通過所述觀測性系統(tǒng)為目標(biāo)服務(wù)請求添加染色信息;
4、通過所述觀測性系統(tǒng)在微服務(wù)之間傳播所述染色信息;
5、在所述目標(biāo)服務(wù)請求傳遞至目標(biāo)微服務(wù)的情況下,通過所述服務(wù)網(wǎng)格系統(tǒng)從所述觀測性系統(tǒng)中獲取所述目標(biāo)服務(wù)請求對應(yīng)的染色信息;
6、在通過所述服務(wù)網(wǎng)格系統(tǒng)獲取到所述目標(biāo)服務(wù)請求對應(yīng)的染色信息的情況下,通過所述服務(wù)網(wǎng)格系統(tǒng)根據(jù)預(yù)設(shè)的路由規(guī)則對所述目標(biāo)服務(wù)請求進(jìn)行匹配處理;
7、在所述目標(biāo)服務(wù)請求匹配成功的情況下,通過所述服務(wù)網(wǎng)格系統(tǒng)在所述目標(biāo)微服務(wù)中執(zhí)行相應(yīng)的故障注入動作。
8、可選地,通過所述觀測性系統(tǒng)為目標(biāo)服務(wù)請求添加染色信息,包括:
9、通過所述服務(wù)網(wǎng)格系統(tǒng)對傳入的服務(wù)請求進(jìn)行攔截;
10、通過所述服務(wù)網(wǎng)格系統(tǒng)檢測攔截到的服務(wù)請求是否為所述目標(biāo)服務(wù)請求;
11、在所述攔截到的服務(wù)請求為所述目標(biāo)服務(wù)請求時,通過所述服務(wù)網(wǎng)格系統(tǒng)調(diào)用所述觀測性系統(tǒng)為所述目標(biāo)服務(wù)請求添加染色信息。
12、可選地,所述觀測性系統(tǒng)為opentelemetry,所述服務(wù)網(wǎng)格系統(tǒng)為istio。
13、可選地,通過所述服務(wù)網(wǎng)格系統(tǒng)調(diào)用所述觀測性系統(tǒng)為所述目標(biāo)服務(wù)請求添加染色信息,包括:
14、通過istio調(diào)用opentelemetry為所述目標(biāo)服務(wù)請求添加opentelemetry?header信息,所述opentelemetry?header信息用于在微服務(wù)之間傳遞跟蹤信息,所述跟蹤信息包括所述染色信息。
15、可選地,在通過所述服務(wù)網(wǎng)格系統(tǒng)獲取到所述目標(biāo)服務(wù)請求對應(yīng)的染色信息的情況下,通過所述服務(wù)網(wǎng)格系統(tǒng)根據(jù)預(yù)設(shè)的路由規(guī)則對所述目標(biāo)服務(wù)請求進(jìn)行匹配處理包括:
16、在通過istio獲取到所述目標(biāo)服務(wù)請求對應(yīng)的染色信息的情況下,通過所述istio中的服務(wù)代理獲取所述istio中的控制平面下發(fā)的路由規(guī)則;
17、通過所述服務(wù)代理檢測所述路由規(guī)則中是否存在請求頭匹配規(guī)則;
18、在所述路由規(guī)則中包含所述請求頭匹配規(guī)則的情況下,基于所述請求頭匹配規(guī)則對所述目標(biāo)服務(wù)請求進(jìn)行匹配處理。
19、可選地,所述方法還包括:
20、在所述目標(biāo)服務(wù)請求匹配失敗的情況下,通過所述目標(biāo)微服務(wù)根據(jù)所述路由規(guī)則執(zhí)行所述目標(biāo)服務(wù)請求。
21、本申請實施例的另一個方面提供了一種故障注入裝置,用于微服務(wù)系統(tǒng)中,所述微服務(wù)系統(tǒng)中部署有觀測性系統(tǒng)及服務(wù)網(wǎng)格系統(tǒng),所述微服務(wù)系統(tǒng)包括多個微服務(wù),所述裝置包括:
22、添加模塊,用于通過所述觀測性系統(tǒng)為目標(biāo)服務(wù)請求添加染色信息;
23、傳播模塊,用于通過所述觀測性系統(tǒng)在微服務(wù)之間傳播所述染色信息;
24、獲取模塊,用于在所述目標(biāo)服務(wù)請求傳遞至目標(biāo)微服務(wù)的情況下,通過所述服務(wù)網(wǎng)格系統(tǒng)從所述觀測性系統(tǒng)中獲取所述目標(biāo)服務(wù)請求對應(yīng)的染色信息;
25、匹配模塊,用于在通過所述服務(wù)網(wǎng)格系統(tǒng)獲取到所述目標(biāo)服務(wù)請求對應(yīng)的染色信息的情況下,通過所述服務(wù)網(wǎng)格系統(tǒng)根據(jù)預(yù)設(shè)的路由規(guī)則對所述目標(biāo)服務(wù)請求進(jìn)行匹配處理;
26、執(zhí)行模塊,用于在所述目標(biāo)服務(wù)請求匹配成功的情況下,通過所述服務(wù)網(wǎng)格系統(tǒng)在所述目標(biāo)微服務(wù)中執(zhí)行相應(yīng)的故障注入動作。
27、本申請實施例的另一個方面提供了一種計算機(jī)設(shè)備,包括:
28、至少一個處理器;及
29、與所述至少一個處理器通信連接的存儲器;
30、其中:所述存儲器存儲有可被所述至少一個處理器執(zhí)行的指令,所述指令被所述至少一個處理器執(zhí)行,以使所述至少一個處理器能夠執(zhí)行如上所述的方法。
31、本申請實施例的另一個方面提供了一種計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀存儲介質(zhì)內(nèi)存儲有計算機(jī)指令,所述計算機(jī)指令被處理器執(zhí)行時實現(xiàn)如上所述的方法。
32、本申請實施例的另一個方面提供了一種計算機(jī)程序產(chǎn)品,包括計算機(jī)程序,該計算機(jī)程序被處理器執(zhí)行時實現(xiàn)如上所述的方法。
33、本申請實施例采用上述技術(shù)方案可以包括如下優(yōu)勢:藉由觀測性系統(tǒng)(比如,opentelemetry)對目標(biāo)服務(wù)請求添加染色信息(實現(xiàn)染色功能),實現(xiàn)對不同協(xié)議的服務(wù)請求都可以進(jìn)行染色,避免為不同協(xié)議的服務(wù)請求添加額外的header信息。此外,通過在所述目標(biāo)服務(wù)請求傳遞至目標(biāo)微服務(wù)的情況下,通過所述服務(wù)網(wǎng)格系統(tǒng)(比如,istio)從所述觀測性系統(tǒng)中獲取所述目標(biāo)服務(wù)請求對應(yīng)的染色信息,并在通過所述服務(wù)網(wǎng)格系統(tǒng)獲取到所述目標(biāo)服務(wù)請求對應(yīng)的染色信息的情況下,通過所述服務(wù)網(wǎng)格系統(tǒng)根據(jù)預(yù)設(shè)的路由規(guī)則對所述目標(biāo)服務(wù)請求進(jìn)行匹配處理,并在所述目標(biāo)服務(wù)請求匹配成功的情況下,通過所述服務(wù)網(wǎng)格系統(tǒng)在所述目標(biāo)微服務(wù)中執(zhí)行相應(yīng)的故障注入動作,從而實現(xiàn)了通過服務(wù)網(wǎng)格系統(tǒng)以非嵌入的方式對微服務(wù)系統(tǒng)進(jìn)行故障注入操作,而無需針對不同語言實現(xiàn)的微服務(wù)維護(hù)獨(dú)立agent代碼邏輯。由于上述方式是通過非嵌入的方式實現(xiàn)故障注入的,因此,上述故障注入方式具有非常好的擴(kuò)展性,且注入方式簡單。
1.一種故障注入方法,其特征在于,用于微服務(wù)系統(tǒng)中,所述微服務(wù)系統(tǒng)中部署有觀測性系統(tǒng)及服務(wù)網(wǎng)格系統(tǒng),所述微服務(wù)系統(tǒng)包括多個微服務(wù),所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過所述觀測性系統(tǒng)為目標(biāo)服務(wù)請求添加染色信息,包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述觀測性系統(tǒng)為opentelemetry,所述服務(wù)網(wǎng)格系統(tǒng)為istio。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,通過所述服務(wù)網(wǎng)格系統(tǒng)調(diào)用所述觀測性系統(tǒng)為所述目標(biāo)服務(wù)請求添加染色信息,包括:
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,在通過所述服務(wù)網(wǎng)格系統(tǒng)獲取到所述目標(biāo)服務(wù)請求對應(yīng)的染色信息的情況下,通過所述服務(wù)網(wǎng)格系統(tǒng)根據(jù)預(yù)設(shè)的路由規(guī)則對所述目標(biāo)服務(wù)請求進(jìn)行匹配處理包括:
6.根據(jù)權(quán)利要求1至5任一項所述的方法,其特征在于,所述方法還包括:
7.一種故障注入裝置,其特征在于,用于微服務(wù)系統(tǒng)中,所述微服務(wù)系統(tǒng)中部署有觀測性系統(tǒng)及服務(wù)網(wǎng)格系統(tǒng),所述微服務(wù)系統(tǒng)包括多個微服務(wù),所述裝置包括:
8.?一種計算機(jī)設(shè)備,其特征在于,包括:
9.一種計算機(jī)可讀存儲介質(zhì),其特征在于,所述計算機(jī)可讀存儲介質(zhì)內(nèi)存儲有計算機(jī)指令,所述計算機(jī)指令被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至9中任一項所述的方法。
10.一種計算機(jī)程序產(chǎn)品,包括計算機(jī)程序,其特征在于,該計算機(jī)程序被處理器執(zhí)行時實現(xiàn)權(quán)利要求1至6中任一項所述方法的步驟。