在微服务中使用 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.tpcf.cn/pingmian/86038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;即…