SpringCloud 06 服務容錯 Sentinel

雪崩:一個微小的故障引起系統其他部分出現故障,最終使整個系統不可用。

雪崩一般經歷以下三個階段:

  1. 實例能力出現過載。可能是 bug 導致性能下降,可能是實例宕機,可能是突發流量,總之實例無法處理如此多請求。
  2. 服務資源耗盡不可用。過載后,大量請求積壓在實例中,迅速消耗服務的CPU,內存,線程等資源。這些資源耗盡,實例出現超時和崩潰。表現為不可用。負載均衡器將請求調度到其他實例,其他實例也同樣過載不可用。服務過載。
  3. 一個服務不可用,服務調用方也出現大量積壓請求,同樣出現過載。逆向沿著調用鏈路傳播,最終導致系統雪崩。

解決思路:

  1. 熔斷。調用方認為被調用服務過載,則快速返回錯誤,不執行調用。
  2. 限流。調用方限定請求量,避免過載。
  3. 降級。犧牲非核心業務保護核心業務。
  4. 擴容。增加實例,提升資源。

Sentinel

Sentinel 是服務容錯插件。實現流量控制,熔斷降級,系統保護等多個功能。
Sentinel 將被保護對象稱為資源。資源可以是接口,URI,代碼。
外部請求訪問資源時,Sentinel 將外部請求包裝為 Entry 對象,并交給 slot chain 處理。
slot chain 是典型的責任鏈模式。
常見的 slot 有:
NodeSelectorSlot構建請求的訪問路徑,并且串聯調用鏈。
StatisticSlot統計運行期數據,比如接口響應時間,線程數,QPS等。
DegradeSlot判定是否熔斷降級。FlowSlot判定限流。
實現ProcessorSlot接口可以自定義slot。

sentinel 流量控制模式:

  1. 直接流控。當前資源訪問壓力超出閾值,則限制請求。
  2. 關聯流控。關聯資源訪問壓力超出閾值,則限制請求。如果資源A與資源B爭搶資源,比如數據庫。而資源A優先級低。如果A的關聯資源(B)的訪問壓力超出閾值,則限制A的請求,把數據庫資源讓給B。
  3. 鏈路流控。如果兩個接口(/api/name, /api/overview)都能訪問資源。而只想限流其中一個接口。

sentinel 流量控制策略:

  1. 快速失敗。
  2. warm up。隨時間增加流量閾值。
  3. 排隊等待。請求進入等待隊列,在等待隊列中超時則失敗。

@SentinelResource注解的blockHandler屬性指定降級方法的名稱,它僅在 BlockException 情況下觸發。BlockException 是 sentinel 定義的異常類,表示被 slot chain 攔截。對于其他 RuntimeException,需要用 fallback 屬性指定降級方法。

sentinel 提供三種熔斷規則:

  1. 異常比例。
  2. 異常數。
  3. 慢調用比例。

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

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

相關文章

Qt同步處理業務并禁用按鈕

1.界面代碼 //按鈕1 void Dialog::on_pushButton1_clicked() {qDebug("pushButton1 clicked start");enableBtns(false);//禁用按鈕qDebug("pushButton1 do sth start");QThread::sleep(5);//休眠,作為同步處理業務qDebug("pushButton1 do…

虛擬專用網技術

一、需求背景物理聯通:實現不同物理位置網絡的連接基礎。網絡聯通:在物理連接基礎上,實現數據等信息的傳輸互通。二、虛擬專用網簡介定義虛擬私有網絡是依靠互聯網服務提供商(ISP)或其他網絡服務提供商(NSP…

GANs生成對抗網絡生成手寫數字的Pytorch實現

目錄 一、第三方庫導入 二、數據集準備 三、使用轉置卷積的生成器 四、使用卷積的判別器 五、生成器生成圖像 六、主程序 七、運行結果 7.1 生成器和判別器的損失函數圖像 7.2 訓練過程中生成器生成的圖像 八、完整的pytorch代碼 由于之前寫gans的代碼時,…

ubuntu 通過NAT模式上網

這里必須使用VMnet8 設置為NAT模式 下面設置Ip地址區域ubuntu ip地址設置來自于上面

盲盒抽谷機小程序系統開發:從0到1的完整方法論

開發一款成功的盲盒抽谷機小程序系統,需兼顧技術實現、用戶體驗與商業邏輯。本文將從需求分析、UI/UX設計、技術架構、測試上線到運營增長,系統梳理從0到1的完整方法論。需求分析:明確“為誰而做”盲盒抽谷機的核心用戶是18-35歲的二次元愛好…

web開發,在線%射擊比賽管理%系統開發demo,基于html,css,jquery,python,django,三層mysql數據庫

經驗心得 兩業務單,業務crud開發很簡單了,自行學習,我說一下學習流程。什么是前端,用到那些技術html,css,javascript分別是什么?進階jquery,bootstrap,各種常見前端組件又是什么,前端框架react,angular以及…

Centos9傻瓜式linux部署CRMEB 開源商城系統(PHP)

服務器環境推薦要求* Nignx(必須) * PHP 7.1 ~ 7.4(必須此版本內,版本過大會警告不兼容) * MySQL 5.7 ~ 8.0(必須) * Redis(非必須)后臺頁面展示:…

AI 云電競游戲盒子:從“盒子”到“云-端-芯”一體化競技平臺的架構實踐

摘要 AI 云電競游戲盒子(以下簡稱“電競盒”)不再是一臺簡單的客廳游戲主機,而是一套以 AI 調度為核心、以云原生架構為骨架、以邊緣渲染為肌肉、以端側感知為神經的“云-端-芯”協同競技系統。本文基于 2024 年 Q2 落地的量產方案&#xff0…

基于kuboard實現kubernetes的集群管理

1、前提條件安裝docker-compose2、步驟在本地目錄創建kuboard-v4\在該目錄下創建文件docker-compose.yaml,內容如下:configs:create_db_sql:content: |CREATE DATABASE kuboard DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;cre…

Linux操作系統軟件編程——多線程

什么是線程線程的定義是輕量級的進程,可以實現多任務的并發。線程是操作系統任務調度的最小單位線程的創建由某個進程創建,且進程創建線程時,會為其分配獨立的棧區空間(默認8M)。線程和所在的進程,以及進程…

linux下找到指定目錄下最新日期log文件

以下是一個完整的C函數&#xff0c;用于在指定目錄下自動查找最近更新的日志文件&#xff08;根據文件名中的時間戳選擇最新的文件&#xff09;&#xff1a;#include <stdio.h> #include <stdlib.h> #include <string.h> #include <dirent.h> #include…

《數學模型》經典案例——鋼管的訂購與運輸

一、問題描述 要鋪設一條 A1→A2→?→A15A_1 \rightarrow A_2 \rightarrow \cdots \rightarrow A_{15}A1?→A2?→?→A15? 的輸送天然氣的主管道&#xff0c;如圖 6.22 所示。經篩選后可以生產這種主管道鋼管的鋼廠有 S1,S2,?,S7S_1, S_2, \cdots, S_7S1?,S2?,?,S7? 。…

Java Web部署

今天小編來分享下如何將本地寫的Java Web程序部署到Linux上。 小編介紹兩種方式&#xff1a; 部署基于Linux Systemd服務、基于Docker容器化部署 首先部署基于Linux Systemd服務 那么部署之前&#xff0c;要對下載所需的環境 軟件下載 Linux&#xff08;以ubuntu&#xf…

告別AI“煉丹術”:“策略懸崖”理論如何為大模型對齊指明科學路徑

摘要&#xff1a;當前&#xff0c;我們訓練大模型的方式&#xff0c;尤其是RLHF&#xff0c;充滿了不確定性&#xff0c;時常產生“諂媚”、“欺騙”等怪異行為&#xff0c;被戲稱為“煉丹”。一篇來自上海AI Lab的重磅論文提出的“策略懸崖”理論&#xff0c;首次為這個混沌的…

深入理解C#特性:從應用到自定義

——解鎖元數據標記的高級玩法&#x1f4a1; 核心認知&#xff1a;特性本質揭秘 public sealed class ReviewCommentAttribute : System.Attribute { ... }特性即特殊類&#xff1a;所有自定義特性必須繼承 System.Attribute&#xff08;基礎規則&#xff09;命名規范&#xff…

機器學習-集成學習(EnsembleLearning)

0 結果展示 0.1 鳶尾花分類 import pandas as pd import numpy as npfrom sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, recall_score, f1_score, classification_repo…

Golang database/sql 包深度解析(一)

database/sql 是 Go 語言標準庫中用于與 SQL&#xff08;或類 SQL&#xff09;數據庫交互的核心包&#xff0c;提供了一套輕量級、通用的接口&#xff0c;使得開發者可以用統一的方式操作各種不同的數據庫&#xff0c;而無需關心底層數據庫驅動的具體實現。 核心設計理念 datab…

文章自然潤色 API 數據接口

文章自然潤色 API 數據接口 ai / 文本處理 基于 AI 的文章潤色 專有模型 / 智能糾錯。 1. 產品功能 基于自有專業模型進行 AI 智能潤色對原始內容進行智能糾錯高效的文本潤色性能全接口支持 HTTPS&#xff08;TLS v1.0 / v1.1 / v1.2 / v1.3&#xff09;&#xff1b;全面兼容…

【狀壓DP】3276. 選擇矩陣中單元格的最大得分|2403

本文涉及知識點 C動態規劃 3276. 選擇矩陣中單元格的最大得分 給你一個由正整數構成的二維矩陣 grid。 你需要從矩陣中選擇 一個或多個 單元格&#xff0c;選中的單元格應滿足以下條件&#xff1a; 所選單元格中的任意兩個單元格都不會處于矩陣的 同一行。 所選單元格的值 互…

IDEA 清除 ctrl+shift+r 全局搜索記錄

定位文件&#xff1a;在Windows系統中&#xff0c;文件通常位于C:Users/用戶名/AppData/Roaming/JetBrains/IntelliJIdea(idea版本)/workspace目錄下&#xff0c;文件名為一小串隨機字符&#xff1b;在Mac系統中&#xff0c;文件位于/Users/用戶名/Library/Application /Suppor…