日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

熔断的原理

發布時間:2024/3/13 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 熔断的原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

熔斷
一、熔斷是什么
日常生活中,保險絲是電路內的“脆弱鏈接”,而這正是它應有的特點。保險絲內通常只有一塊很幼細的金屬絲,就是阻抗部件;這金屬絲會連接到電路中。當通過電路的電流過高,造成金屬絲溫度上升并熔掉,使得觸點之間出現空隙,電路便會斷開。這時電流便會停止,因而制止了電路過熱的危險,也防止電氣問題引起的火災。
上面的“保險絲”就是“熔斷器”;則規定時間內通過的流量超過這個熔斷機制的上限,會自動斷開,從而保護下游,使下游的影響下降到最低。
二、互聯網的熔斷指的是?
在大量微服務所構成的分布式系統中,某個基礎服務的不可用,可能導致服務雪崩效應,即:依賴該基礎服務的所有其它基礎服務及級聯的上游服務的級聯性不可用故障。
熔斷機制是防止服務雪崩的基本技術手段。通過檢查依賴服務的失敗狀況并封裝熔斷邏輯,阻止在依賴服務暫時出現故障期間的錯誤反復不斷地向上傳播。基本思路是快速失敗和 Fallback 機制。
三、設計熔斷的目標是為了?
在未達到熔斷要求時,正常調用依賴服務;在達到熔斷要求時,調用指定的降級方法或拋出異常。這要求定義熔斷要求,做一個熔斷器設計。
針對這種需求,常用的一種處理方式是采用事件機制。將每一次依賴服務調用或者降級調用轉換成一次事件,建立事件監聽器進行事件統計,將事件統計結果傳給熔斷器,熔斷器來決定下一次調用的走向。
四、如何實現?
熔斷機制的實現思路主要包括:
熔斷配置:失敗事件的閾值、執行器配置等;失敗事件包括超時、異常事件;
斷路器:在失敗事件達到指定閾值時,將依賴服務的調用熔斷,采取降級策略;采取某種規則從熔斷狀態恢復到正常狀態;
事件統計:在特定時間窗口內,統計依賴服務調用成功事件、失敗事件(失敗次數、失敗比率等)、異常事件等;
事件機制:連接事件統計、斷路器狀態機、服務調用與熔斷降級,串聯成完整的流程。
重點是斷路器和事件機制的設計實現。
1、斷路器
熔斷情形主要有:強制直接熔斷;斷路器開啟、調用次數達到總數閾值且失敗事件達到指定閾值(失敗百分比、失敗絕對次數等)。主要是斷路狀態機的設計實現。斷路器狀態機如圖所示:

斷路狀態機有三個狀態: CLOSE (關閉),HALF-OPEN (半開),OPEN (開啟)。
斷路器默認是 CLOSE 狀態,此時,正常調用依賴服務。
當調用次數達到總數閾值且失敗事件的閾值達到指定值時,進入 OPEN 狀態,開啟降級邏輯;
當斷路器位于 OPEN 狀態時,將進入一段斷路時間窗期,這個時間窗內的請求將不會轉發給依賴服務,
而是轉發給指定的降級邏輯;當斷路器位于 OPEN 狀態,且過了斷路時間窗期,就會進入 HALF-OPEN 狀態。
斷路器使用稱為 HALF-OPEN 狀態的監視和反饋機制來了解依賴服務是否以及何時恢復。在 HALF-OPEN 狀態,
根據規則將部分請求轉發給依賴服務(默認是只重試第一次請求),若調用成功則進入 CLOSE 狀態,
恢復調用依賴服務,若對依賴服務的調用超時或失敗,則斷路器保持在 OPEN 狀態。
五、熔斷的功能
1、異常處理(斷路器可以依據異常類型來判斷打開halfopen的時間)
2、日志記錄(一個斷路器應記錄所有失敗的請求)
3、可恢復性(應該把斷路器配置成與受保護操作最匹配的恢復模式)
4、測試失敗的操作(可周期性測試查驗遠程服務確定服務是否再次可用)
5、手動復位(如果一個故障恢復時間過長,可以配置手動復位的選項)
6、重試失敗請求(一般記錄好日志后,當斷路器處于HALFOPEN時,在遠程資源或服務重試)
六、測試熔斷機制是否可靠
在spring boot工程里面有個組件叫hystrix
通過注解的方式
spring-cloud-starter-netflix-hystrix
在application.java的類名上加注解@EnableCircuitBreaker
如商品服務
在需要熔斷的接口服務類名上加
@FeignClient(name=“goods-service”, fallback=GoodsServiceFB.class)
寫降級實現類GoodsServiceFB.java去實現接口GoodsService接口(熔斷打開時就調用此實現類的方法)
接下來就來個高并發訪問吧,直接壓掛商品服務,看是否調用降級方法。
日常測試中,如果要測試熔斷機制,(單線程)在被測代碼中sleep一段時間,
讓系統誤以為不可用從未調用降級方法。(多線程)在線程中獲取當前線程Thread ,sleep一段時間。(粗暴簡單)
Thread.currentThread().sleep(毫秒);

總結

以上是生活随笔為你收集整理的熔断的原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。