在微服務中使用 Sentinel

在微服務中集成 Sentinel

1. 添加依賴

對于 Spring Cloud 項目,首先需要添加 Sentinel 的依賴:

<!-- Spring Cloud Alibaba Sentinel -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>2.2.5.RELEASE</version>
</dependency><!-- Sentinel 數據源擴展(如使用 Nacos 作為規則配置中心) -->
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><version>1.8.0</version>
</dependency>

2. 配置 Sentinel

在 application.yml 中添加基本配置:

spring:cloud:sentinel:transport:dashboard: localhost:8080 # Sentinel 控制臺地址port: 8719 # 本地啟動的 HTTP Server 端口eager: true # 是否立即初始化datasource:ds1:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-sentinelgroupId: DEFAULT_GROUPrule-type: flow

3. 啟動 Sentinel 控制臺

從?GitHub Release?下載最新版本的控制臺 jar 包,然后運行:

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

Sentinel 核心功能實踐

1. 流量控制

流量控制是 Sentinel 最基本的功能,可以限制某個資源的訪問量:

@GetMapping("/resource")
@SentinelResource(value = "protected-resource", blockHandler = "handleBlock")
public String getResource() {return "Protected Resource";
}public String handleBlock(BlockException ex) {return "Request blocked by Sentinel";
}

在控制臺中可以為 "protected-resource" 配置流控規則,如設置 QPS 閾值為 100。

2. 熔斷降級

Sentinel 提供了三種熔斷策略:

  1. 慢調用比例:當響應時間超過閾值的請求比例達到設定值時觸發熔斷

  2. 異常比例:當異常請求比例達到閾值時觸發熔斷

  3. 異常數:當異常數達到閾值時觸發熔斷

    @GetMapping("/unstable-api")
    @SentinelResource(value = "unstable-api", fallback = "fallbackMethod")
    public String unstableApi() {if (Math.random() > 0.5) {throw new RuntimeException("Random error");}return "Success";
    }public String fallbackMethod(Throwable t) {return "Fallback response";
    }

    3. 系統自適應保護

    Sentinel 可以根據系統的負載動態調整入口流量:

    // 在配置類中添加系統規則
    @PostConstruct
    public void initSystemRule() {List<SystemRule> rules = new ArrayList<>();SystemRule rule = new SystemRule();rule.setHighestSystemLoad(4.0); // 當系統 load1 超過 4 時觸發保護rule.setMaxThread(1000); // 最大線程數rule.setQps(500); // 全局 QPS 閾值rules.add(rule);SystemRuleManager.loadRules(rules);
    }

    高級特性

    1. 熱點參數限流

    可以對特定參數值進行細粒度限流:

    @GetMapping("/hot")
    @SentinelResource(value = "hot-resource",blockHandler = "handleHotBlock")
    public String hotEndpoint(@RequestParam String id) {return "Hot data for " + id;
    }

    然后在控制臺中配置參數 id 的特定值(如 "123")的限流規則。

    2. 集群流控

    當應用有多個實例時,可以使用集群流控來限制整個集群的流量:

    // 配置集群流控規則
    FlowRule rule = new FlowRule();
    rule.setResource("cluster-resource");
    rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
    rule.setCount(1000);
    rule.setClusterMode(true); // 開啟集群模式
    FlowRuleManager.loadRules(Collections.singletonList(rule));

    3. 規則持久化

    為了避免規則在應用重啟后丟失,可以將規則持久化到 Nacos、Zookeeper 或 Apollo:

    spring:cloud:sentinel:datasource:ds1:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-flow-rulesgroupId: SENTINEL_GROUPrule-type: flowds2:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-degrade-rulesgroupId: SENTINEL_GROUPrule-type: degrade

總結

Sentinel 為微服務架構提供了強大的流量控制、熔斷降級和系統保護能力。通過合理配置 Sentinel,可以顯著提高分布式系統的穩定性和可靠性。與傳統的 Hystrix 相比,Sentinel 提供了更豐富的控制維度、更直觀的監控界面和更靈活的擴展能力,是現代微服務架構中不可或缺的組件。

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

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

相關文章

中斷控制與實現

一、中斷基本概念 1、中斷 中斷是一種異步事件&#xff0c;用于通知處理器某個事件已經發生&#xff0c;需要處理器立即處理。由于I/O操作的不確定因素以及處理器和I/O設備之間的速度不匹配&#xff0c;I/O設備可以通過某種硬件信號異步喚醒對應的處理器的響應&#xff0c;這些…

前端跨域解決方案(7):Node中間件

1 Node 中間件核心 1.1 為什么開發環境需要 Node 代理&#xff1f; 在前端開發中&#xff0c;我們常遇到&#xff1a;前端運行在localhost:3000&#xff0c;后端 API 在localhost:4000&#xff0c;跨域導致請求失敗。而傳統解決方案有以下局限性&#xff1a; 修改后端 CORS 配…

iwebsec靶場-文件上傳漏洞

01-前端JS過濾繞過 1&#xff0c;查看前端代碼對文件上傳的限制策略 function checkFile() { var file document.getElementsByName(upfile)[0].value; if (file null || file "") { alert("你還沒有選擇任何文件&a…

GitHub 趨勢日報 (2025年06月23日)

&#x1f4ca; 由 TrendForge 系統生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日報中的項目描述已自動翻譯為中文 &#x1f4c8; 今日獲星趨勢圖 今日獲星趨勢圖 390 suna 387 system-prompts-and-models-of-ai-tools 383 Web-Dev-For-Beginners…

告別水印煩惱,一鍵解鎖高清無痕圖片與視頻!

在這個數字化飛速發展的時代&#xff0c;無論是設計小白還是創意達人&#xff0c;都可能遇到這樣的困擾&#xff1a;心儀的圖片或視頻因水印而大打折扣&#xff0c;創意靈感因水印而受限。別急&#xff0c;今天就為大家帶來幾款神器&#xff0c;讓你輕松告別水印煩惱&#xff0…

LangChain4j在Java企業應用中的實戰指南:構建RAG系統與智能應用-2

LangChain4j在Java企業應用中的實戰指南&#xff1a;構建RAG系統與智能應用-2 開篇&#xff1a;LangChain4j框架及其在Java生態中的定位 隨著人工智能技術的快速發展&#xff0c;尤其是大語言模型&#xff08;Large Language Models, LLMs&#xff09;的廣泛應用&#xff0c;…

Cola StateMachine 的無狀態(Stateless)特性詳解

Cola StateMachine 的無狀態&#xff08;Stateless&#xff09;特性詳解 在現代分布式系統中&#xff0c;無狀態設計是構建高可用、可擴展服務的關鍵原則之一。Cola StateMachine 作為一款輕量級的狀態機框架&#xff0c;通過其獨特的設計理念實現了良好的無狀態特性。本文將深…

使用事件通知來處理頁面回退時傳遞參數和賦值問題

背景。uniapp開發微信小程序。在當前頁面需要選擇條件&#xff0c;如選擇城市。會打開新的頁面。此時選擇之后需要關閉頁面回到當初的頁面。但問題出現了。onLoad等事件是不會加載的。相關鏈接。uniapp頁面通訊說明使用事件通知來處理頁面回退時傳遞參數和賦值問題 頁面之間的…

騰訊云COS“私有桶”下,App如何安全獲得音頻調用流程

流程圖 #mermaid-svg-Phy4VCltBRZ90UH8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Phy4VCltBRZ90UH8 .error-icon{fill:#552222;}#mermaid-svg-Phy4VCltBRZ90UH8 .error-text{fill:#552222;stroke:#552222;}#me…

基于深度學習的側信道分析(DLSCA)Python實現(帶測試)

一、DLSCA原理介紹 基于深度學習的側信道分析(DLSCA)是一種結合深度神經網絡與側信道分析技術的密碼分析方法。該方法利用深度學習模型從能量消耗、電磁輻射等側信道信息中提取與密鑰相關的特征模式。相比傳統分析方法&#xff0c;DLSCA能夠自動學習復雜的特征關系&#xff0c…

云原生 CAD 讓制造業設計協同更便捷

隨著互聯網、云計算技術的突飛猛進&#xff0c;CAD向著網絡化、協同化的方向快速發展&#xff0c;云CAD軟件逐漸映入人們的眼簾。云原生CAD不僅打破了傳統CAD軟件對硬件配置的依賴&#xff0c;更以數據驅動的協同創新模式&#xff0c;重塑了制造業的產品研發流程與組織協作形態…

Docker容器核心操作指南:`docker run`參數深度解析

技術聚焦 作為容器化技術的起點&#xff0c;docker run命令承擔著90%的容器創建工作。其關鍵參數-d&#xff08;后臺模式&#xff09;與-it&#xff08;交互模式&#xff09;的合理運用&#xff0c;直接影響容器行為模式與運維效率。本文將深度拆解兩大模式的應用場景與…

基于單片機的語音控制設計(論文)

摘要 自然語音作為人機交互在目前得以廣泛的應用以及極大的發展前景。該設計介紹了基于非指定人語音芯片LD3320的語音控制器結構及其實現語音控制的方法。該語音控制器利用STM32F103C8T6單片機作為主要控制器&#xff0c;控制芯片對輸入的進行語音識別并處理&#xff0c;根據語…

【論文閱讀 | CVPRW 2023 |CSSA :基于通道切換和空間注意力的多模態目標檢測】

論文閱讀 | CVPRW 2023 |CSSA &#xff1a;基于通道切換和空間注意力的多模態目標檢測 1.摘要&&引言2.方法2.1 框架概述2.2 通道切換通道注意力2.3 空間注意力 3. 實驗3.1 實驗設置3.1.1 數據集3.1.2 實現細節3.1.3 評估指標 3.2 對比研究3.2.1 定量結果3.2.2 定性結果…

《前端資源守衛者:SRI安全防護全解析》

SRI&#xff08;子資源完整性&#xff09;作為守護前端安全的隱形盾牌&#xff0c;以精妙的技術設計構建起資源驗證防線。深入理解其工作邏輯與配置方法&#xff0c;是每位前端開發者筑牢應用安全的必修課。 SRI的核心價值&#xff0c;在于為外部資源打造獨一無二的“數字身份…

項目需求評審報告參考模板

該文檔是需求評審報告模板 內容涵蓋評審基礎信息,如項目名稱、評審時間、地點、級別、方式等;包含評審簽到表,記錄角色、部門、職務、姓名等信息;還有評審工作量統計相關內容;以及評審問題跟蹤表,記錄問題描述、狀態、解決人及時限等,還附有填表說明,對評審適用范圍、工…

從依賴進口到自主創新:AI 電子設計系統如何重塑 EDA 全流程

EDA全稱是Electronic Design Automation&#xff0c;即電子設計自動化&#xff0c;是利用計算機軟件完成電路設計、仿真、驗證等流程的設計工具&#xff0c;貫穿于芯片和板級電路設計、制造、測試等環節&#xff0c;是不可或缺的基礎設計工具。 EDA與電子材料、裝備是電子信…

前端工程化之微前端

微前端 微前端基本知識主要的微前端框架iframe優點&#xff1a;缺點&#xff1a; single-spa示例主應用spa-root-config.jsmicrofrontend-layout.htmlindex.ejs 子應用spa-react-app2.jsroot.component.js 修改路由spa-demo/microfrontend-layout.htmlspa-demo/react-app1/webp…

MemcacheRedis--緩存服務器理論

Memcached/redis是高性能的分布式內存緩存服務器,通過緩存數據庫查詢結果&#xff0c;減少數據庫訪問次數&#xff0c;以提高動態Web等應用的速度、 提高可擴展性。 緩存服務器作用: 加快訪問速度 ,緩解數據庫壓力 1. memcached&#xff08;單節點在用&#xff09; 1.1 特點 1…

【stm32】標準庫學習——I2C

目錄 一、I2C 1.I2C簡介 2.MPU6050參數 3.I2C時序基本單元 二、I2C外設 1.I2C外設簡介 2.配置I2C基本結構 3.初始化函數模板 4.常用函數 一、I2C 1.I2C簡介 本節課使用的是MPU6050硬件外設 2.MPU6050參數 3.I2C時序基本單元 這里發送應答是指主機發送&#xff0c;即…