熔斷降級(Sentinel解決)

問題概述

在微服務架構中一定要預防微服務雪崩問題,微服務雪崩問題就是指在微服務架構中,當一個服務出現故障時,由于服務之間的依賴關系,故障可能會傳播到其他服務,從而導致了大規模的服務失敗,系統無法正常運行。這種情況就像雪崩一樣,因為最初的一個小問題最終引發了整個系統的崩潰。

簡單來說,微服務雪崩就是微服務之間相互調用,因為調用鏈中的一個服務故障,引起整個鏈路都無法訪問的情況

熔斷:當某個異常條件被觸發,直接熔斷整個服務,而不是一直等到此服務超時,為了防止防止整個系統的故障,而采用了一些保護措施(過載保護)。比如A服務的X功能依賴B服務的某個接口,當B服務接口響應很慢時,A服務X功能的響應也會被拖慢,進一步導致了A服務的線程都卡在了X功能上,A服務的其它功能也會卡主或拖慢。此時就需要熔斷機制,即A服務不在請求B這個接口,而可以直接進行降級處理。

降級: 服務器壓力劇增時,根據當前業務情況以及流量,對一些服務和頁面進行有策略的降級。以此緩解服務器資源的壓力,以保證核心業務的正常運行,同時也保證了客戶和大部分客戶得到正確的響應

解決方案

常用的預防微服務雪崩的方法有:

超時處理:設定超時時間,請求超過一定時間沒有響應就返回錯誤信息,不會無休止的等待

熔斷降級:當服務的異常數異常比例超過了預設的閾值熔斷器就會進入開啟狀態,暫時中斷對該服務的請求,此時走降級方法,能夠快速響應,確保系統的基本功能能夠繼續運行

限流限制對服務的請求速率,避免短時間內大量的請求導致系統崩潰

線程池隔離:給要請求的資源分配一個線程池,線程池去控制請求數量

信號量隔離:使用計數器模式,記錄請求資源的并發線程數量,達到信號量上限時,禁止新的請求(信號隔離適合同步請求,控制并發數,比如對文件的下載并發數進行控制)

大多場景都適合使用線程池隔離,對于需要同步操作控制并發數的場景可以使用信號量隔離

Sentinel解決熔斷降級

什么是Sentinel:Sentinel (分布式系統的流量防衛兵) 是阿?開源的?套?于服務容錯的綜合性解決?案。它以流量為切?點, 從流量控制、熔斷降級、系統負載保護等多個維度來保護服務的穩定性

本項目中,使用Sentinel實現限流、熔斷等機制預防微服務雪崩

熔斷降級是微服務保護的一種方法,當使用Feign進行遠程調用,在客戶端通過熔斷降級措施進行微服務保護

如:orders-manager訂單服務請求customer查詢地址簿,在進行feign遠程調用過程時出現異常將走降級方法,當異常比例或異常數達到一定的閾值將出發熔斷,熔斷期間將直接走降級邏輯快速響應

在feign進行遠程調用服務的同時,Sentinel會一直對使用@SentinelResource注解標注的資源進行流量控制和熔斷降級(SentinelResource注解的屬性:value--用于定義資源的名稱,Sentinel對其進行流量控制和熔斷降級,fallback:降級方法,但是異常不是因為限流和熔斷等,blockHandler:出發限流、熔斷時執行的降級方法)

實例:

@Component
@Slf4j
public class CustomerClient {@Resourceprivate AddressBookApi addressBookApi;@SentinelResource(value = "getAddressBookDetail", fallback = "detailFallback", blockHandler = "detailBlockHandler")public AddressBookResDTO getDetail(Long id) {log.error("根據id查詢地址簿,id:{}", id);// 調用其他微服務方法AddressBookResDTO detail = addressBookApi.detail(id);return detail;}//執行異常走public AddressBookResDTO detailFallback(Long id, Throwable throwable) {log.error("非限流、熔斷等導致的異常執行的降級方法,id:{},throwable:", id, throwable);return null;}//熔斷后的降級邏輯public AddressBookResDTO detailBlockHandler(Long id, BlockException blockException) {log.error("觸發限流、熔斷時執行的降級方法,id:{},blockException:", id, blockException);return null;}
}

當customer服務恢復之后,熔斷時間結束此時會再次嘗試請求customer,如果成功請求將關閉熔斷,恢復原來的鏈路,否則將再次走降級邏輯

關于Sentinel實現熔斷降級還可以看:服務熔斷降級 Sentinel(保姆級)_sentinel 熔斷降級-CSDN博客

熔斷降級貌似還有Hystrix可以實現,之后可以再去了解

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898737.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898737.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898737.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qt高分屏自適應

一.設置默認 DPI 感知 Windows 上的桌面應用程序可以在不同的 DPI 感知模式下運行。 這些模式可實現不同的 DPI 縮放行為,并且可以使用不同的坐標空間。 有關 DPI 感知的詳細信息,請參閱在 Windows 上開發高 DPI 桌面應用程序。 請務必顯式為進程設置默認 DPI 感知模式,以避…

TPCTF 2025 web 復現

文章目錄 baby layoutsafe layoutSafe Layout Revengesupersqli baby layout 在index.js文件中,看到了有使用DOMPurify庫來防止XSS操作 在package.json里可以看到版本是3.2.4,關于3.2.3是有繞過策略的。它會把script標簽清除掉,去看bot可以看到flag是放…

Agent Team 多智能體系統解析

引言 在人工智能技術高速發展的今天,"多智能體協作系統"(Agent Team)正成為突破效率瓶頸的關鍵技術。與傳統的單體AI不同,這種由多個專業化智能體組成的協同網絡,通過分工協作和動態調整,展現出…

【前端 vue 或者麥克風,智能語音識別和播放功能】

前端 vue 或者麥克風&#xff0c;智能語音識別和播放功能 1. 終端安裝 npm install recordrtc2.引入 import RecordRTC from recordrtc3.html&#xff08;根據自己業務更改&#xff09; <div class"Page"><el-form ref"mainFormRef" class&qu…

bootstrap 表格插件bootstrap table 的使用經驗談!

最近在開發一個物業管理軟件&#xff0c;其中用到bootstrap 的模態框。同時需要獲取表格數據。用傳統的方法&#xff0c;本人不想用&#xff0c;考慮到bootstrap應該有獲取表格數據的方法&#xff0c;結果發現要想實現獲取表格數據功能&#xff0c;需要通過bootstrap的插件實現…

HTML 圖像與多媒體元素:拓展學習邊界的進度記錄(一)

開篇&#xff1a;學習啟程 在前端開發的廣袤領域中&#xff0c;HTML 作為構建網頁的基石&#xff0c;其重要性不言而喻。而 HTML 圖像與多媒體元素&#xff0c;就像是為這座基石添上了絢麗的色彩與靈動的音符&#xff0c;賦予網頁更加豐富的表現力和交互性。作為一名熱衷于探索…

循環不變量原則——螺旋矩陣

題目&#xff1a;螺旋矩陣 本題相較于螺旋矩陣II的不同之處是&#xff1a;螺旋矩陣II的矩陣是n行n列的方陣&#xff0c;而本題的矩陣并不一定是方陣。所以在遵循循環不變量原則遍歷完矩陣后&#xff0c;還會有一行或者一列沒有遍歷。 1、行多列少&#xff08;多一列沒遍歷&am…

【前端】Visual Studio Code安裝配置教程:下載、漢化、常用組件、基本操作

文章目錄 一、Visual Studio Code下載二、漢化三、常用組件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感謝觀看&#xff01; 一、Visual Studio Code下載 下載官網&#xff1a;https://code.visualstudio.com/ 進入官網后點擊右上角的Download &…

Java對象的hashcode

在 Java 中&#xff0c;hashcode 和 equals 方法是 Object 類的兩個重要方法&#xff0c;它們在處理對象比較和哈希集合&#xff08;如 HashMap、HashSet&#xff09;時起著關鍵作用。對于equals大部分Java程序員都不陌生&#xff0c;它通常是比較兩個對象的內容(值)是否相等(雙…

Ubuntu22.04通過DKMS包安裝Intel WiFi系列適配器(網卡驅動)

下載驅動包 訪問 backport-iwlwifi-dkmshttps://launchpad.net/ubuntu/source/backport-iwlwifi-dkms 網站&#xff0c;找到適用于Ubuntu 22.04的update版本&#xff08;如backport-iwlwifi-dkms_xxxx_all.deb&#xff09;&#xff0c;下載至本地。 安裝驅動 在下載目錄中執行以…

深度學習--概率

1 基本概率論 1.1 假設我們擲骰子&#xff0c;想知道1而不是看到另一個數字的概率&#xff0c;如果骰子是公司&#xff0c;那么所有6個結果(1..6),都有相同的可能發生&#xff0c;因此&#xff0c;我們可以說1發生的概率為1/6. 然而現實生活中&#xff0c;對于我們從工廠收到的…

kaggle上經典泰坦尼克項目數據分析探索

之前了解在kaggle上這個項目很火&#xff0c;最近想要加強一下python數據分析&#xff0c;所以在kaggle上找到這個項目進行學習探索&#xff0c;下面是將一些學習資料以及過程整理出來。 一、首先我們了解一下項目背景以及如何找到這個項目。 kaggle項目地址: https://www.k…

《深度剖析:鴻蒙系統不同終端設備的UI自適應布局策略》

在萬物互聯的時代&#xff0c;鴻蒙系統以其獨特的分布式理念和強大的技術架構&#xff0c;迅速在智能終端領域嶄露頭角。隨著鴻蒙生態的不斷壯大&#xff0c;越來越多的開發者投身其中&#xff0c;致力于為用戶打造豐富多樣的應用體驗。然而&#xff0c;如何讓應用在不同終端設…

計算機網絡的軟件、硬件和組成

&#xff11;.計算機網絡的組成 計算機網絡是一個十分復雜的系統&#xff0c;在邏輯上可以分為完成數據通信的通信子網和進行數據處理的資源子網兩個部分。 通信子網 通信子網提供網絡通信的功能&#xff0c;可以完成網絡主機之間的數據傳輸、交換、通信控制和信號變換等通信…

告別低效人工統計!自動計算計劃進度

實時監控任務進度一直是項目管理中的一項巨大挑戰。 人工統計方式不僅耗時耗力&#xff0c;而且往往由于信息傳遞的延遲和人為誤差&#xff0c;導致無法實時獲得準確的項目進展信息。 這種不準確性可能掩蓋潛在的風險點&#xff0c;從而影響項目的整體進度和成果。 Ganttable …

樓宇自控系統的結構密碼:總線與分布式結構方式的差異與應用

在現代建筑中&#xff0c;為了實現高效、智能的管理&#xff0c;樓宇自控系統變得越來越重要。它就像建筑的 智能管家&#xff0c;可自動控制照明、空調、通風等各種機電設備&#xff0c;讓建筑運行更順暢&#xff0c;還能節省能源成本。而在樓宇自控系統里&#xff0c;有兩種關…

OpenWrt開發第4篇:設置開發板的IP-基于Raspberry Pi 4B開發板

文/指尖動聽知識庫-谷谷 文章為付費內容,商業行為,禁止私自轉載及抄襲,違者必究!!! 文章專欄:Openwrt開發-基于Raspberry Pi 4B開發板 有時候開發過程中經常會使用其他路由器,很多時候固件燒上去之后板子IP基本都是192.168.1.1,這時就需要修改板子的IP,下面介紹一下板…

Node.js系列(4)--微服務架構實踐

Node.js微服務架構實踐 &#x1f504; 引言 微服務架構已成為構建大規模Node.js應用的主流選擇。本文將深入探討Node.js微服務架構的設計與實現&#xff0c;包括服務拆分、服務治理、通信機制等方面&#xff0c;幫助開發者構建可擴展的微服務系統。 微服務架構概述 Node.js…

Docker逃逸

判斷是否再docker中 1.ls -a / (查看c根目錄查看是否有docker配置文件) 2.查看進程 如果在要逃逸到真實環境中&#xff1a; 特權模式進行docker逃逸&#xff1a;管理員執行eddocker run--privileg&#xff0c;如何判斷是否是特權模式&#xff08;&#xff09; 特權模式以…

Vite管理的Vue3項目中monaco editer的使用以及組件封裝

文章目錄 背景環境說明安裝流程以及組件封裝引入依賴封裝組件 外部使用實現效果 v-model實現原理 背景 做oj系統的時候,需要使用代碼編輯器,決定使用Monaco Editor&#xff0c;但是因為自身能力問題&#xff0c;讀不懂官網文檔&#xff0c;最終結合ai和網友的帖子成功引入&…