什么是服務(wù)降級呢?降級主要有以下幾種情況:
- 超時:當(dāng)下游的服務(wù)因為某種原因響應(yīng)過慢,下游服務(wù)主動停掉一些不太重要的業(yè)務(wù),釋放出服務(wù)器資源,增加響應(yīng)速度!
- 不可用:當(dāng)下游的服務(wù)因為某種原因不可用,上游主動調(diào)用本地的一些降級邏輯,避免卡頓,迅速返回給用戶!
- 限流:防止上游服務(wù)請求太多導(dǎo)致服務(wù)崩潰,所以限制請求的數(shù)量,來達(dá)到保護(hù)下游服務(wù)的目的,當(dāng)請求的流量到達(dá)一定閾值時,直接拒絕多余的請求,執(zhí)行降級邏輯
看到這,相信你已經(jīng)看到了一個相同點,就是以上三者(超時、不可用、限流)觸發(fā)時,都會走同一個邏輯,那就是降級邏輯,在hystrix里面叫做fallback;
什么是服務(wù)熔斷?熔斷很好理解,就是一個斷開的過程;
熔斷就像是家里的保險絲一樣,當(dāng)電流達(dá)到一定條件時,比如保險絲能承受的電流是5A,如果你的電流達(dá)到了6A,因為保險絲承受不了這么高的電流,保險絲就會融化,這時候電路就會斷開,起到了保護(hù)電器的作用;
在微服務(wù)里面也是一樣,當(dāng)下游的服務(wù)因為某種原因突然變得不可用或響應(yīng)過慢,上游服務(wù)為了保證自己整體服務(wù)的可用性,不再繼續(xù)調(diào)用目標(biāo)服務(wù),直接返回,快速釋放資源。如果目標(biāo)服務(wù)情況好轉(zhuǎn)則恢復(fù)調(diào)用;
熔斷和降級的關(guān)系
說了那么多,其實也能想到了,降級和熔斷其實就是服務(wù)安全中的2個不同的流程,在服務(wù)發(fā)生故障時,肯定是先斷開(熔斷)與服務(wù)的連接,然后在執(zhí)行降級邏輯;
那既然不管怎樣都會執(zhí)行降級邏輯,這時候就可以理解為 降級是一種設(shè)計思想,在java層面就是一個接口,而熔斷是降級的不同實現(xiàn)方式,他們的關(guān)系如下圖:
降級方式
那么我們現(xiàn)在知道降級是一個接口了,接下來在看看他們的實現(xiàn)方式是怎樣的吧
1、熔斷降級(不可用)
熔斷邏輯是這樣的,A服務(wù)調(diào)用B服務(wù),失敗次數(shù)達(dá)到一定閾值后 ,A服務(wù)的斷路器打開,就不在請求B服務(wù),而是直接執(zhí)行本地的fallback方法;這種叫做熔斷降級,看到這里,也許你已經(jīng)明白了,熔斷只是降級的其中一種實現(xiàn)方式;
2、超時降級
同樣是A服務(wù)調(diào)用B服務(wù),B服務(wù)響應(yīng)超過了A服務(wù)設(shè)定的閾值后,就會執(zhí)行降級邏輯;
3、限流降級
同樣是A服務(wù)調(diào)用B服務(wù),服務(wù)A的連接已超過自身能承載的最大連接數(shù),比如說A能承載的連接數(shù)為5,但是目前的并發(fā)有6個請求同時進(jìn)行,前5請求能正常請求,最后一個會直接拒絕,執(zhí)行fallback降級邏輯;
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注服務(wù)器之家的更多內(nèi)容!
原文鏈接:https://blog.csdn.net/qq_27184497/article/details/119993725