Sentinel相關記錄

系列文章目錄

draft

Sentinel 是阿里巴巴開源的 輕量級服務防護組件,主要用于實現以下功能:流量控制FlowRule(Rate Limiting):限制單位時間內的請求量,防止系統過載。
熔斷降級DegradeRule(Circuit Breaker):當某個服務異常時,自動熔斷,避免雪崩效應。
系統自適應保護SystemRule:根據系統的負載情況動態調整資源分配。
熱點參數限流ParamFlowRule:對某些高頻訪問的參數進行限流。
集群流控:支持分布式系統的統一限流策略。
Sentinel 的設計目標是 低侵入性、高擴展性、易于集成,常用于微服務架構中。

文章目錄

  • 系列文章目錄
  • 一、Sentinel DashBoard搭建
  • 二、web接口資源
    • 1、web資源正常和異常請求--preHandle()
    • 2、流控規則設置-QPS=1
    • 3、自定義異常處理
  • 二、@SentinelResource資源
    • 1、自定義異常處理
  • 三、流量控制-流控模式-鏈路策略
  • 四、熔斷降級


一、Sentinel DashBoard搭建

網上很多教程,省略

二、web接口資源

在這里插入圖片描述

1、web資源正常和異常請求–preHandle()

返回true, 表述放行,返回false,表示違背設置規則,報錯
在這里插入圖片描述

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String resourceName = "";try {resourceName = this.getResourceName(request);if (StringUtil.isEmpty(resourceName)) {return true;} else if (this.increaseReference(request, this.baseWebMvcConfig.getRequestRefName(), 1) != 1) {return true;} else {String origin = this.parseOrigin(request);String contextName = this.getContextName(request);ContextUtil.enter(contextName, origin);Entry entry = SphU.entry(resourceName, 1, EntryType.IN);request.setAttribute(this.baseWebMvcConfig.getRequestAttributeName(), entry);return true;}} catch (BlockException var12) {BlockException e = var12;try {this.handleBlockException(request, response, resourceName, e);} finally {ContextUtil.exit();}return false;}}

2、流控規則設置-QPS=1

在這里插入圖片描述
如果多次請求
在這里插入圖片描述

public class DefaultBlockExceptionHandler implements BlockExceptionHandler {public DefaultBlockExceptionHandler() {}public void handle(HttpServletRequest request, HttpServletResponse response, String resourceName, BlockException ex) throws Exception {response.setStatus(429);PrintWriter out = response.getWriter();out.print("Blocked by Sentinel (flow limiting)");out.flush();out.close();}
}

3、自定義異常處理

顯示結果:在這里插入圖片描述

在這里插入代碼片
@Component
public class MyBlockException implements BlockExceptionHandler {private ObjectMapper objectMapper = new ObjectMapper();@Overridepublic void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, String s, BlockException e) throws Exception {httpServletResponse.setContentType("application/json;charset=UTF-8");PrintWriter writer = httpServletResponse.getWriter();R error = R.error(500, "服務不可用,請稍后再試!" + e.getClass());String s1 = objectMapper.writeValueAsString(error);writer.write(s1);writer.flush();writer.close();}
}

二、@SentinelResource資源

給 @SentinelResource(value = “createOrder”)添加流控規則,違反規則以后
在這里插入圖片描述
異常, 這是springboot 異常情況默認返回
在這里插入圖片描述

1、自定義異常處理

 @SentinelResource(value = "createOrder",blockHandler = "createOrderFallback")
public  public Order createOrder(Long id, Long userId) {}
自定義createOrderFallback
//設置兜底回調public Order createOrderFallback(Long id, Long userId, BlockException blockException) {Order order = new Order();order.setId(id);order.setUserId(userId);order.setTotalPrice(BigDecimal.ZERO);order.setUserName("Fallback User");order.setProducts(Arrays.asList()); // 返回空產品列表return order;}

三、流量控制-流控模式-鏈路策略

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
異常情況
在這里插入圖片描述
/create 不管執行多少次,都是正常的
在這里插入圖片描述

四、熔斷降級

在這里插入圖片描述

切斷不穩定調用
快速返回不積壓
避免雪崩效應
熔斷降級作為保護自身的手段,通常在客戶端進行配置

在這里插入圖片描述
在這里插入圖片描述

在 5 秒的時間窗口內,如果有 5 個請求,并且其中 80% 的請求超時(例如超過 1 秒),則觸發熔斷。此時如果系統有兜底數據,會返回兜底數據,避免直接報錯。
熔斷窗口結束后,斷路器進入半開狀態。此時會嘗試發送一個探測請求。如果探測調用成功,斷路器將切換為關閉狀態,后續請求可以正常調用;如果探測調用失敗或依然很慢,斷路器保持打開狀態,繼續拒絕請求,直到下一次熔斷條件再次被觸發。

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

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

相關文章

2025年滲透測試面試題總結-29(題目+回答)

安全領域各種資源,學習文檔,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具,歡迎關注。 目錄 二百四十一、XSS 設置Http-Only如何繞過 二百四十二、XSS攻擊手段分類 二百四十三、高殺軟覆蓋工作組的滲…

如何用Wireshark捕獲當前房間路由器和主機的數據包

一、前期工作 在我的這篇文章中: Wireshark USRP聯合波形捕獲(上)-CSDN博客 通過192.168.1.103這個主機ip篩選Wireshark捕獲的數據包,認為Source和Direction中至少一個包含192.168.1.103才能代表路由器和主機之間的WiFi信號。 …

深度解析游戲引擎中的相機:視圖矩陣

在現代游戲引擎中,相機系統是不可或缺的一部分。它決定了玩家在游戲中看到的視角和場景。而視圖矩陣作為相機系統的核心組件之一,起到了至關重要的作用。本文將深入探討視圖矩陣的原理、計算方法及其在游戲引擎中的應用。 視圖矩陣的基本概念 視圖矩陣…

96、23種設計模式之原型模式(5/23)

原型模式(Prototype Pattern)是創建型設計模式的一種,其核心思想是通過復制現有對象(原型)來創建新對象,而非通過構造函數或工廠方法從頭構建。該模式將對象的創建過程從構造邏輯轉移到復制操作&#xff0c…

【python與生活】如何用Python寫一個簡單的自動整理文件的腳本?

用 Python 寫一個自動整理文件的腳本很簡單,核心思路是:按文件后綴(如 .jpg、.pdf)將文件分類,移動到對應的文件夾(如「圖片」「文檔」)中。以下是一個實用的實現方案,新手也能輕松修…

SELinux相關介紹

目錄 1.SELinux 概述 2.SELinux 的執行模式 3.SELinux 的使用 1.SELinux 概述 SELinux( Security Enhanced Linux 安全性增強的Linux),由美國國家安全局 NSA(National Security Agency)開發,構建與 Kernel …

【C語言練習】漢諾塔

一、題目 介紹:漢諾塔(Tower of Hanoi),又稱河內塔,是一個源于印度古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓…

隨機森林實戰:在鳶尾花數據集上與決策樹和邏輯斯蒂回歸進行對比

前言 集成學習通過組合多個模型的優勢,常能獲得比單一模型更優的性能,隨機森林便是其中的典型代表。它基于 Bagging 思想,通過對樣本和特征的雙重隨機采樣,構建多棵決策樹并綜合其結果,在降低過擬合風險的同時&#xf…

(計算機網絡)TCP 三握中第三次 ACK 丟失會發生什么?

在 TCP 的三次握手過程中,如果 第三次 ACK 丟失,TCP 是如何保證連接可靠建立的呢?1?? 場景說明第三次 ACK:客戶端發送給服務器的 ACK,確認服務器的 SYN-ACK。假設該 ACK 在網絡傳輸過程中丟失。2?? 客戶端狀態客戶…

容智Report Agent2.0重磅發布!重新定義企業數據分析AI時代

在數據成為生產要素之一的今天,很多企業依然面臨這樣的困境: 想要一份年度財務分析,財務團隊可能要忙半個月甚至一個月;想查一個業務指標,要先找出在哪個系統,再申請權限、寫SQL、調報表,折騰半…

高階數據結構---ST表

hello大家好,今天是2025年8月23日,我要來給大家分享的是一個高階數據結構---ST表。 一:引入 1.RMQ問題: 對于一個長度為 n 的序列,有 m 次查詢操作,每次查詢為一個區間 [l,r] 的最大值&#…

docker 安裝nacos(vL2.5.0)

查找nacos 的所需的鏡像版本 https://hub.docker.com/r/nacos/nacos-server/tags 拉取你所需的版本(我們用v2.5.0) docker pull nacos/nacos-server:v2.5.0 注意:因為我們需要掛載外配置文件 直接用volume 掛載目錄 缺少初始文件報錯 我們…

在github上通過dmca數字版權申訴侵權并刪除侵權倉庫

DMCA是什么? 《數字千年版權法案》(DMCA)為版權所有者(包括軟件開發人員)創建了一個標準化的流程,要求GitHub刪除侵權內容。您可以在美國版權局的官方網站上找到有關DMCA的更多信息。有關GitHub如何處理DM…

AI安全監控與人才需求的時間悖論(對AI安全模型、AI安全人才需求的一些思考)

當監控者與被監控者都是AI時,誰來監控監控者?這個看似簡單的問題,卻揭示了人工智能安全領域的根本性困境。一、問題的提出:當AI監控AI 隨著大語言模型和生成式AI的快速發展,AI系統在元認知層面的能力越來越強&#xff…

AI模型部署 - 大型語言模型(LLM)推理部署中的實際顯存評估

目錄 第一部分:大型語言模型(LLM)推理顯存占用的核心原理 1.1 顯存占用的主要構成部分 1.2 影響顯存占用的關鍵因素 1.2.1 模型架構:MoE vs. 稠密模型 1.2.2 上下文長度與并發數 1.2.3 部署方式與推理框架 1.2.4 硬件能力 第二部分:顯存占用的精確計算方法 2.1 模…

【大語言模型 16】Transformer三種架構深度對比:選擇最適合你的模型架構

【大語言模型 16】Transformer三種架構深度對比:選擇最適合你的模型架構 關鍵詞:Transformer架構,Encoder-Only,Decoder-Only,Encoder-Decoder,BERT,GPT,T5,模型選擇&…

【LeetCode 熱題 100】31. 下一個排列

Problem: 31. 下一個排列 文章目錄整體思路完整代碼時空復雜度時間復雜度:O(N)空間復雜度:O(1)整體思路 這段代碼旨在解決經典的 “下一個排列” (Next Permutation) 問題。問題要求重新排列一個整數數組,使其變為字典序上的下一個更大的排列…

【Linux 進程】進程程序替換

文章目錄1.進程替換的六個庫函數2.execl1.進程替換的六個庫函數 使用 man 3 execl 進行查詢,3表示 Linux 中的3號手冊,即為庫函數(例如C標準庫中的庫函數,printf,malloc) man 1: 用戶命令(在sh…

ReasonRank: Empowering Passage Ranking with Strong Reasoning Ability

主要內容總結 本文提出了一種具有強推理能力的列表式段落重排序模型ReasonRank,旨在解決現有重排序模型在推理密集型場景(如復雜問答、數學問題、代碼查詢等)中表現不佳的問題,核心原因是這類場景缺乏高質量的推理密集型訓練數據。 為解決這一問題,研究團隊: 設計了自動…

不卡頓、不掉線!穩定可靠的體育賽事直播系統源碼解析

在體育和電競行業,實時直播系統已經成為平臺的標配。無論是 OTT、比分直播網站,還是綜合類體育社區,用戶對直播體驗的要求越來越高:不卡頓、不掉線、實時性強。那么,從技術角度出發,一個穩定可靠的 體育賽事…