久久青草精品A片狠狠,日韩欧美视频一区二区,亚洲国码AV日韩,国产精品黄在

幫助中心 >  行業(yè)資訊 >  其他 >  服務(wù)降級(jí)的設(shè)計(jì)與實(shí)踐

服務(wù)降級(jí)的設(shè)計(jì)與實(shí)踐

2021-05-10 14:41:36 5443

一、服務(wù)降級(jí)的目的

為什么服務(wù)降級(jí)?

當(dāng)對(duì)業(yè)務(wù)的請(qǐng)求超過(guò)業(yè)務(wù)系統(tǒng)預(yù)設(shè)的上限閾值時(shí),為了保證基本和重要的業(yè)務(wù)模塊正常運(yùn)行,

1.拒絕部分請(qǐng)求

2.不重要的業(yè)務(wù)模塊暫停服務(wù)或延遲提供服務(wù)。


1.jpg


二、服務(wù)降級(jí)的實(shí)現(xiàn)手段

服務(wù)降級(jí)的手段有兩大類:

第一類是關(guān)閉部分非核心服務(wù)。例如雙12當(dāng)天,京東暫時(shí)關(guān)閉退貨服務(wù)。

第二類是拒絕部分請(qǐng)求。這里面又分成三個(gè)手段

(1)根據(jù)RPC隊(duì)列方式,把舊的請(qǐng)求丟棄。我們還是想想雙12買東西。在業(yè)務(wù)邏輯層pendding的舊的請(qǐng)求,或許客戶端已經(jīng)取消了,因此要舍棄請(qǐng)求,一定先舍棄最久的。但這種方式有個(gè)問(wèn)題,舊的請(qǐng)求可能是核心請(qǐng)求,新的可能是非核心請(qǐng)求的。

(2)根據(jù)請(qǐng)求報(bào)文CMD的優(yōu)先級(jí)。在CMD列表的請(qǐng)求保留,不在列表中的CMD舍棄。

實(shí)際應(yīng)用中,需要前兩種相結(jié)合,即(1)決定什么時(shí)候開(kāi)啟、關(guān)閉丟棄  (2)決定丟棄誰(shuí)

(3)隨機(jī)拒絕方式:這種不靠譜,實(shí)際環(huán)境沒(méi)人用。

3.jpg


三、服務(wù)降級(jí)的設(shè)計(jì)

我們將服務(wù)降級(jí)設(shè)置在什么位置?網(wǎng)關(guān)還是全鏈路?

1.在網(wǎng)關(guān)層做服務(wù)降級(jí):

   這樣做不靠譜的地方是,因?yàn)橐粋€(gè)網(wǎng)關(guān)后面可能有多個(gè)業(yè)務(wù)邏輯層。


4.jpg


2.全鏈路降級(jí)。也就是使用上上個(gè)圖中兩種方法結(jié)合的方式。讓網(wǎng)關(guān)、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層都有降級(jí)的機(jī)制。每一層能處理多少請(qǐng)求自己說(shuō)了算。


5.jpg


和方案1比,方案2更靠譜。

那么,有一個(gè)小疑問(wèn),在方案2中,DB層是否需要做降級(jí)?

在上圖的模型中,讀同步寫異步。讀的時(shí)候,DAO層已經(jīng)做了限流,就不用在DB層限流。在寫請(qǐng)求時(shí),會(huì)先寫到MQ,所以只要是MQ沒(méi)有超限,DB就不會(huì)出現(xiàn)問(wèn)題。

四、熔斷的實(shí)現(xiàn)

熔斷的實(shí)現(xiàn)有兩種方式:組件級(jí)、平臺(tái)級(jí):


6.jpg

1.組件級(jí)解決方案

Neflix的Hystrix熔斷組件是個(gè)jar包。Hystrix的熔斷機(jī)制是API顆粒度的。如下圖所示:


7.jpg


前面說(shuō)過(guò),Hystrix是組件級(jí)的熔斷,好處是使用的時(shí)候,直接引入Jar包就可以。壞處是,任何要做熔斷的微服務(wù),它的上上游都需要引入jar,而且Hystrix限制哪個(gè)API,是需要硬編碼的。


8.jpg


2.平臺(tái)級(jí)解決方案

如果上下游調(diào)用是RPC。我們能否把熔斷的功能寫入到RPC Client。這樣上游引入RPC Client客戶端就可以,而不需要引入單獨(dú)的jar包。此外,哪些API需要熔斷,最好寫在配置中心。

如下圖所示,我們?cè)赿ashboard寫入要限制API的名稱以及參數(shù),然后通過(guò)服務(wù)管理平臺(tái)將配置規(guī)則推送給網(wǎng)關(guān)。網(wǎng)關(guān)上的RPC Client(RPC Over TCP)可以解析這些配置,并其下游的業(yè)務(wù)邏輯層對(duì)應(yīng)的API進(jìn)行熔斷。


9.jpg


服務(wù)管理平臺(tái)的本質(zhì)如下圖所示,即服務(wù)數(shù)據(jù)平臺(tái)是控制面板。


10.jpg


服務(wù)治理平臺(tái)實(shí)現(xiàn)熔斷的邏輯圖,圖示比較清楚,不再贅述:


11.jpg


在構(gòu)建服務(wù)治理平臺(tái)時(shí),可以參照現(xiàn)在市面上新型的熔斷器框架,例如Resilience4j,會(huì)有服務(wù)器模式和嵌入模式。前者會(huì)有一個(gè)獨(dú)立的 Resilience4j server,后者還是引入jar包。前者性能會(huì)好不少。




提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題: