System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及信息,特別是涉及一種基于分布式服務網關的服務熔斷方法及相關產品。
技術介紹
1、分布式服務網關的部署架構中包括多個服務網關,服務請求通過服務網關訪問對應的服務。當服務請求所訪問的服務因為某些原因發生故障而不可用時,例如,服務內部錯誤和網絡延遲等,可能會因為級聯故障導致雪崩效應使得整個系統癱瘓,因此需要對不可用的服務進行熔斷。
2、相關技術中,借助遠程字典服務(remote?dictionary?server,redis)實現服務的熔斷。然而,若通過redis實現服務的熔斷,每個服務請求通過服務網關訪問對應的服務時,服務網關均需要與redis進行交互,服務網關的性能受到redis的約束。
技術實現思路
1、基于上述問題,本申請提供了一種基于分布式服務網關的服務熔斷方法及相關產品,去除服務網關對于redis的依賴,提升服務網關的性能。
2、本申請實施例公開了如下技術方案:
3、第一方面,本申請實施例提供基于分布式服務網關的服務熔斷方法,方法包括:
4、獲取每個服務網關中記錄的訪問每個服務的錯誤率;
5、針對任一服務,在任一服務網關中記錄的服務的錯誤率大于對應的錯誤閾值的情況下,打開服務對應的斷路器。
6、可選地,針對任一服務網關,服務網關包括多個計數器,計數器與服務一一對應,每個計數器通過位循環數組記錄訪問對應的服務的錯誤次數,并根據服務的錯誤次數得到對應的錯誤率。
7、可選地,每個計數器通過
8、每個計數器通過循環位數組,記錄窗口內訪問對應的服務的錯誤次數。
9、可選地,方法還包括:
10、接收服務請求;
11、基于負載均衡將服務請求轉發給對應的服務網關。
12、可選地,基于負載均衡將服務請求轉發給對應的服務網關,包括:
13、確定服務請求對應的服務,以及服務對應的斷路器的狀態;其中,斷路器的狀態包括第一狀態和第二狀態,第一狀態指示斷路器關閉,第二狀態指示短路器打開;
14、在斷路器的狀態為第一狀態的情況下,基于負載均衡將服務請求轉發給對應的服務網關。
15、可選地,方法還包括:
16、在斷路器的狀態為第二狀態的情況下,確定斷路器的熔斷時間;
17、在熔斷時間大于錯誤閾值的情況下,將斷路器的狀態從第二狀態更改為第三狀態,并通過負載均衡將服務請求轉發給對應的服務網關,使得服務請求訪問服務;第三狀態允許一個服務請求訪問對應的服務;
18、在服務請求訪問服務成功的情況下,將斷路器的狀態從第三狀態更改為第一狀態;在服務請求訪問服務失敗的情況下,將斷路器的狀態從第三狀態更改為第二狀態。
19、可選地,方法還包括:
20、針對任一服務,在服務對應的斷路器打開的情況下,對所有服務網關中記錄的訪問服務的錯誤率清零。
21、第二方面,本申請實施例提供一種基于分布式服務網關的服務熔斷裝置,其特征在于,裝置包括:獲取模塊和熔斷模塊;
22、獲取模塊,用于獲取每個服務網關中記錄的訪問每個服務的錯誤率;
23、熔斷模塊,用于針對任一服務,在任一服務網關中記錄的服務的錯誤率大于對應的錯誤閾值的情況下,打開服務對應的斷路器。
24、可選地,裝置還包括:計數器模塊;針對任一服務網關,服務網關包括一個計數器模塊,計數器模塊包括多個計數器,計數器與服務一一對應;
25、每個計數器,用于通過位循環數組記錄訪問對應的服務的錯誤次數,并根據服務的錯誤次數得到對應的錯誤率。
26、可選地,計數器模塊,具體用于通過循環位數組,記錄窗口內訪問對應的服務的錯誤次數。
27、可選地,裝置還包括:接收模塊和轉發模塊;
28、接收模塊,用于接收服務請求;
29、轉發模塊,用于基于負載均衡將服務請求轉發給對應的服務網關。
30、可選地,轉發模塊,具體用于確定服務請求對應的服務,以及服務對應的斷路器的狀態;其中,斷路器的狀態包括第一狀態和第二狀態,第一狀態指示斷路器關閉,第二狀態指示短路器打開;在斷路器的狀態為第一狀態的情況下,基于負載均衡將服務請求轉發給對應的服務網關。
31、可選地,轉發模塊,還用于在斷路器的狀態為第二狀態的情況下,確定斷路器的熔斷時間;在熔斷時間大于錯誤閾值的情況下,將斷路器的狀態從第二狀態更改為第三狀態,并通過負載均衡將服務請求轉發給對應的服務網關,使得服務請求訪問服務;第三狀態允許一個服務請求訪問對應的服務;在服務請求訪問服務成功的情況下,將斷路器的狀態從第三狀態更改為第一狀態;在服務請求訪問服務失敗的情況下,將斷路器的狀態從第三狀態更改為第二狀態。
32、可選地,裝置還包括:清零模塊;
33、清零模塊,用于針對任一服務,在服務對應的斷路器打開的情況下,對所有服務網關中記錄的訪問服務的錯誤率清零。
34、第三方面,本申請實施例提供一種計算機設備,包括:存儲器,處理器,及存儲在存儲器上并可在處理器上運行的計算機程序,處理器執行計算機程序時,實現如第一方面任一實施例的基于分布式服務網關的服務熔斷方法。
35、第四方面,本申請實施例提供一種計算機可讀存儲介質,計算機可讀存儲介質中存儲有指令,當指令在終端設備上運行時,使得終端設備執行如第一方面任一實施例的基于分布式服務網關的服務熔斷方法。
36、通過redis對訪問服務的錯誤率進行記錄并通過redis控制斷路器的狀態,使得服務網關的性能受到redis的約束,為了提升服務網關的性能,本申請實施例提供一種基于分布式服務網關的服務熔斷方法,首先,獲取每個服務網關中記錄的訪問每個服務的錯誤率;然后,針對任一服務,在任一服務網關中記錄的服務的錯誤率大于對應的錯誤閾值的情況下,打開服務對應的斷路器。在本申請實施例中,利用服務網關記錄訪問服務的錯誤率,并通過網關控制該服務對應的斷路器,實現服務網關與redis的解耦,服務網關的性能不再受到redis的約束而得到提升。
本文檔來自技高網...【技術保護點】
1.一種基于分布式服務網關的服務熔斷方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述針對任一服務網關,所述服務網關包括多個計數器,所述計數器與所述服務一一對應,每個所述計數器通過位循環數組記錄訪問所述服務的錯誤次數,并根據所述服務的錯誤次數得到對應的錯誤率。
3.根據權利要求2所述的方法,其特征在于,所述每個所述計數器通過位循環數組記錄訪問對應的服務的錯誤次數,包括:
4.根據權利要求1-3任一項所述的方法,其特征在于,所述方法還包括:
5.根據權利要求4所述的方法,其特征在于,所述基于負載均衡將所述服務請求轉發給對應的所述服務網關,包括:
6.根據權利要求5所述的方法,其特征在于,所述方法還包括:
7.根據權利要求1所述的方法,其特征在于,所述方法還包括:
8.一種基于分布式服務網關的服務熔斷裝置,其特征在于,所述裝置包括:獲取模塊和熔斷模塊;
9.一種計算機設備,其特征在于,包括:存儲器,處理器,及存儲在所述存儲器上并可在所述處理器上運行的計算機程序
10.一種計算機可讀存儲介質,其特征在于,所述計算機可讀存儲介質中存儲有指令,當所述指令在終端設備上運行時,使得所述終端設備執行如權利要求1-7任一項所述的基于分布式服務網關的服務熔斷方法。
...【技術特征摘要】
1.一種基于分布式服務網關的服務熔斷方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述針對任一服務網關,所述服務網關包括多個計數器,所述計數器與所述服務一一對應,每個所述計數器通過位循環數組記錄訪問所述服務的錯誤次數,并根據所述服務的錯誤次數得到對應的錯誤率。
3.根據權利要求2所述的方法,其特征在于,所述每個所述計數器通過位循環數組記錄訪問對應的服務的錯誤次數,包括:
4.根據權利要求1-3任一項所述的方法,其特征在于,所述方法還包括:
5.根據權利要求4所述的方法,其特征在于,所述基于負載均衡將所述服務請求轉發給對應的所述服務網關,包括:
6.根據權...
【專利技術屬性】
技術研發人員:王鑫,何光宇,
申請(專利權)人:東軟集團股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。