您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關JAVA中熔斷和降級真實關系是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
什么是服務降級呢?降級主要有以下幾種情況
超時:當下游的服務因為某種原因響應過慢,下游服務主動停掉一些不太重要的業務,釋放出服務器資源,增加響應速度!
不可用:當下游的服務因為某種原因不可用,上游主動調用本地的一些降級邏輯,避免卡頓,迅速返回給用戶!
限流:防止上游服務請求太多導致服務崩潰,所以限制請求的數量,來達到保護下游服務的目的,當請求的流量到達一定閾值時,直接拒絕多余的請求,執行降級邏輯
看到這,相信你已經看到了一個相同點,就是以上三者(超時、不可用、限流)觸發時,都會走同一個邏輯,那就是降級邏輯,在hystrix里面叫做fallback;
熔斷很好理解,就是一個斷開的過程;
熔斷就像是家里的保險絲一樣,當電流達到一定條件時,比如保險絲能承受的電流是5A,如果你的電流達到了6A,因為保險絲承受不了這么高的電流,保險絲就會融化,這時候電路就會斷開,起到了保護電器的作用;
在微服務里面也是一樣,當下游的服務因為某種原因突然變得不可用或響應過慢,上游服務為了保證自己整體服務的可用性,不再繼續調用目標服務,直接返回,快速釋放資源。如果目標服務情況好轉則恢復調用;
說了那么多,其實也能想到了,降級和熔斷其實就是服務安全中的2個不同的流程,在服務發生故障時,肯定是先斷開(熔斷)與服務的連接,然后在執行降級邏輯;
那既然不管怎樣都會執行降級邏輯,這時候就可以理解為 降級是一種設計思想,在java層面就是一個接口,而熔斷是降級的不同實現方式,他們的關系如下圖:
那么我們現在知道降級是一個接口了,接下來在看看他們的實現方式是怎樣的吧
1、熔斷降級(不可用)
熔斷邏輯是這樣的,A服務調用B服務,失敗次數達到一定閾值后 ,A服務的斷路器打開,就不在請求B服務,而是直接執行本地的fallback方法;這種叫做熔斷降級,看到這里,也許你已經明白了,熔斷只是降級的其中一種實現方式;
2、超時降級
同樣是A服務調用B服務,B服務響應超過了A服務設定的閾值后,就會執行降級邏輯;
3、限流降級
同樣是A服務調用B服務,服務A的連接已超過自身能承載的最大連接數,比如說A能承載的連接數為5,但是目前的并發有6個請求同時進行,前5請求能正常請求,最后一個會直接拒絕,執行fallback降級邏輯;
關于“JAVA中熔斷和降級真實關系是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。