JAVA熔斷和降級真實關系的圖文詳解
剛開始我以為熔斷和降級是一體的,以為他們必須配合使用; 只不過名字不一樣而已,但是當我經(jīng)過思考過后,發(fā)現(xiàn)他們其實不是一個東西;
降級
什么是服務降級呢?降級主要有以下幾種情況
- 超時:當下游的服務因為某種原因響應過慢,下游服務主動停掉一些不太重要的業(yè)務,釋放出服務器資源,增加響應速度!
- 不可用:當下游的服務因為某種原因不可用,上游主動調用本地的一些降級邏輯,避免卡頓,迅速返回給用戶!
- 限流:防止上游服務請求太多導致服務崩潰,所以限制請求的數(shù)量,來達到保護下游服務的目的,當請求的流量到達一定閾值時,直接拒絕多余的請求,執(zhí)行降級邏輯
看到這,相信你已經(jīng)看到了一個相同點,就是以上三者(超時、不可用、限流)觸發(fā)時,都會走同一個邏輯,那就是降級邏輯,在hystrix里面叫做fallback;

熔斷
什么是服務熔斷
熔斷很好理解,就是一個斷開的過程;
熔斷就像是家里的保險絲一樣,當電流達到一定條件時,比如保險絲能承受的電流是5A,如果你的電流達到了6A,因為保險絲承受不了這么高的電流,保險絲就會融化,這時候電路就會斷開,起到了保護電器的作用;
在微服務里面也是一樣,當下游的服務因為某種原因突然變得不可用或響應過慢,上游服務為了保證自己整體服務的可用性,不再繼續(xù)調用目標服務,直接返回,快速釋放資源。如果目標服務情況好轉則恢復調用;
熔斷和降級的關系
說了那么多,其實也能想到了,降級和熔斷其實就是服務安全中的2個不同的流程,在服務發(fā)生故障時,肯定是先斷開(熔斷)與服務的連接,然后在執(zhí)行降級邏輯;

那既然不管怎樣都會執(zhí)行降級邏輯,這時候就可以理解為 降級是一種設計思想,在java層面就是一個接口,而熔斷是降級的不同實現(xiàn)方式,他們的關系如下圖:

降級方式
那么我們現(xiàn)在知道降級是一個接口了,接下來在看看他們的實現(xiàn)方式是怎樣的吧
1、熔斷降級(不可用)
熔斷邏輯是這樣的,A服務調用B服務,失敗次數(shù)達到一定閾值后 ,A服務的斷路器打開,就不在請求B服務,而是直接執(zhí)行本地的fallback方法;這種叫做熔斷降級,看到這里,也許你已經(jīng)明白了,熔斷只是降級的其中一種實現(xiàn)方式;

2、超時降級
同樣是A服務調用B服務,B服務響應超過了A服務設定的閾值后,就會執(zhí)行降級邏輯;

3、限流降級
同樣是A服務調用B服務,服務A的連接已超過自身能承載的最大連接數(shù),比如說A能承載的連接數(shù)為5,但是目前的并發(fā)有6個請求同時進行,前5請求能正常請求,最后一個會直接拒絕,執(zhí)行fallback降級邏輯;

總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!
相關文章
springboot實現(xiàn)token驗證登陸狀態(tài)的示例代碼
本文主要介紹了spring?boot?實現(xiàn)token驗證登陸狀態(tài),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-07-07
springboot Rabbit MQ topic 配置文件綁定隊列和交換機的
本文詳細講解了在SpringBoot中使用RabbitMQ進行隊列與交換機的綁定方法,包括創(chuàng)建交換機、隊列和綁定它們的步驟,以及如何發(fā)送和接收消息,適用于開發(fā)高并發(fā)系統(tǒng),如秒殺系統(tǒng)等2024-09-09
在SpringBoot中使用jwt實現(xiàn)token身份認證的實例代碼
你還不會在SpringBoot中使用jwt實現(xiàn)token身份認證嗎,本文小編就給大家詳細的介紹一下在SpringBoot中使用jwt實現(xiàn)token身份認證的實例代碼,感興趣的同學可以自己動手試一試2023-09-09
SpringBoot封裝響應數(shù)據(jù)實現(xiàn)過程詳解
這篇文章主要介紹了SpringBoot封裝響應數(shù)據(jù)實現(xiàn)過程,SpringBoot響應數(shù)據(jù)封裝是指在SpringBoot應用程序中,將返回的數(shù)據(jù)進行封裝,以便于前端頁面或其他客戶端使用,感興趣想要詳細了解可以參考下文2023-05-05
maven打包web項目時同時打包為war和jar文件的方法
本篇文章主要介紹了maven打包web項目時同時打包為war和jar文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
Spring boot @ModelAttribute標注的實現(xiàn)
這篇文章主要介紹了Spring boot @ModelAttribute標注的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01

