Spring Cloud Alibaba之限流与防护组件Sentinel

实例演示1:通过Sentinel实现限流

  • 创建SentinelDemo的Maven项目,配置pom文件:
 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>
</dependencies>
  • 编写启动类:
package prj;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringBootApp {public static void main(String[] args) {SpringApplication.run(SpringBootApp.class, args);}
}
  • 编写application.properties配置文件:
spring.application.name=SentinelDemo
# 与Sentinel控制台交互的端口
spring.cloud.sentinel.transport.port=9000
# sentinel控制台的工作地址和端口
spring.cloud.sentinel.transport.dashboard=localhost:8090
  • 编写Controller控制类ContrllerForLimit:
@RestController
public class ControllerForLimit {@RequestMapping("/sayHello")@SentinelResource(value = "sayHello")public String sayHello() {return "Hello Sentinel";}@RequestMapping("/useSentinel")@SentinelResource(value = "useSentinel")public String useSentinel() {return "Use Sentinel";}}
  • 控制台设置限流参数,运行项目观察效果

实例演示2:实现热点限流效果

  • 在SentinelDemo项目的基础上,新增控制类ContrllerForHotPot:
@RestController
public class ControllerForHotSpot {@RequestMapping("/buyItem")@SentinelResource(value = "buyItem")public String buyItem(@RequestParam(value = "item", required = false) String item,@RequestParam(value = "price", required = false) String price) {return "Hot Spot Demo";}
}
  • 控制台设置热点限流参数,观察效果

实例演示3:实现熔断限流效果

  • 在SentinelDemo项目的基础上,新增控制类ContrllerForFusing:
@RestController
public class ControllerForFusing {@RequestMapping("/testFusing")@SentinelResource(value = "testFusing")public String testFusing() {try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}return "Test Fusing";}
}
  • 控制台设置慢调用比例参数后,编写测试类,运行项目观察熔断效果:
class RequestThread extends Thread{public void run() {RestTemplate restTemplate = new RestTemplate();ResponseEntity<String> entity = restTemplate.getForEntity("http://localhost:8080/testFusing", String.class);System.out.println(entity.getBody());}
}
public class TestFusing {public static void main(String[] args){for(int i = 0;i<1000;i++) {new RequestThread().start();}}
}

实例演示4:实现服务降级效果

  • 在控制类ContrllerForLimit,添加limitForHandle的服务方法
@RestController
public class ControllerForLimit {@RequestMapping("/sayHello")@SentinelResource(value = "sayHello")public String sayHello() {return "Hello Sentinel";}@RequestMapping("/useSentinel")@SentinelResource(value = "useSentinel")public String useSentinel() {return "Use Sentinel";}@RequestMapping("/limitForHandler")@SentinelResource(value = "limitForHandler",fallback ="handleException")public String limitForHandler() {return "limitForHandler";}public String handleException() {return "handler limit Exception";}
}
  • 编辑流控规则,运行项目观察限流效果 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/36411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能化招聘管理系统的价格大概是多少?会很贵吗?

很多企业在做自己本单位的招聘的时候&#xff0c;使用的方法都是非常的原始的人工方法。这些方法虽然成本不大&#xff0c;但是给人事人员带来的工作压力是比较大的&#xff0c;因为来企业面试的人或许非常多&#xff0c;带来的简历也是比较多的。这个时候需要人事人员人工的筛…

1.变量数据类型

1.常见的字面量类型,整数,浮点数,字符串 2.注释 # , “”“”“” , todo注释 一般包括序言性注释(功能接口,数据的描述,模块功能),功能性注释(程序段的功能,语句功能,数据的状态), 3.变量 记录存储数据. 定义变量不需要指定类型 变量名称 值 变量的值是可以改变的,可重复使…

Linux源码阅读笔记07-进程管理4大常用API函数

find_get_pid find_get_pid(...)函数功能&#xff1a;根据进程编号获取对应的进程描述符&#xff0c;具体Linux内核源码对应函数设计如下&#xff1a; 获取进程描述符&#xff0c;且描述符的count1&#xff0c;表示进程多一个用户 pid_task pid_task(...)函数功能&#xff1…

vue2中的组件自定义事件

1.绑定事件: <组件 :自定义名称"方法" /> 2.调用 this.$emit(方法,参数) 3.关闭 this.$off(方法) 案例: 1.提前准备好组件 Student组件 <template><div class"student"><h1>学校名称:{{ st…

惠普笔记本双指触摸不滚屏

查看笔记本型号 一般在笔记本背面很小的字那里 进入惠普官网 笔记本、台式机、打印机、墨盒与硒鼓 | 中国惠普 (hp.com) 选择“支持”>“解决问题”>“软件与驱动程序” 选择笔记本 输入型号&#xff0c;选择操作系统 下载驱动进行完整 重启之后进行测试

Studying-代码随想录训练营day22| 回溯理论基础、77.组合、216.组合总和II、17.电话号码的字母组合

第22天&#xff0c;回溯章节开始&#xff01;一大算法难点&#xff0c;加油加油&#xff01; 回溯理论基础组合问题的剪枝操作 文档讲解&#xff1a;代码随想录回溯理论基础 视频讲解&#xff1a;回溯理论基础 回溯法也叫回溯搜索法&#xff0c;它是一种搜索&#xff0c;遍历的…

Arathi Basin (AB) PVP15

Arathi Basin &#xff08;AB&#xff09; PVP15 阿拉希盆地&#xff0c;PVP&#xff0c;15人战场

放大招了|十亿参数大模型LLMs运行功耗仅需13W,内存使用量减少90%!

矩阵乘法&#xff08;MatMul&#xff09;历来是大型语言模型&#xff08;LLMs&#xff09;总体计算成本的主导因素&#xff0c;尤其在模型向更大维度嵌入和上下文长度发展时&#xff0c;这一成本呈指数级增长。 近期有一篇刚刚发表的论文中提出的方法完全去除了矩阵乘法操作&am…

grpc学习golang版( 三、proto文件数据类型)

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 文章目录 一、proto语法二、proto中的标量类型三、proto中的数组类型四、proto中的Map类型五、proto中的嵌套类型六、…

Oracle ACE夜话--和首席-总监一起跟大家谈一谈分布式数据库发展

前言 在昨日的Oracle ACE夜话中&#xff0c;和薛首席、尹总监一起聊了下当前分布式数据库的内容&#xff0c;现将分享内容又进行了相应整理&#xff0c;分享给大家&#xff0c;也希望大家多多指正。 一、自我介绍 尚雷&#xff0c;公众号【尚雷的驿站】&#xff0c;PG ACE&a…

C++项目实践学习笔记---DLL

linux守护进程 守护进程或精灵进程&#xff08;Daemon&#xff09;&#xff1a;以后台服务方式运行的进程&#xff0c;它们不占用终端&#xff08;Shell&#xff09;&#xff0c;因此不会受终端输入或其他信号&#xff08;如中断信号&#xff09;的干扰守护进程有如下特点。 &…

高性能并行计算课程论文:并行网络爬虫的设计与实现

目录 1.绪论 1.1 研究背景 1.2 研究意义 ​​​​​​​1.3 文章结构 2. 网络爬虫相关理论 ​​​​​​​2.1 URL地址格式 ​​​​​​​2.2 网页爬取策略 2.2.1 深度优先策略 2.2.2 广度优先策略 2.2.3 最佳优先策略 ​​​​​​​2.3 网页分析算法 ​​​​​​​2.3.1 正…

微软发布Phi-3系列语言模型:手机端的强大AI助手

大模型&#xff08;LLMs&#xff09;在处理复杂任务时展现出的巨大潜力&#xff0c;但却需要庞大的计算资源和存储空间&#xff0c;限制了它们在移动设备等资源受限环境中的应用。微软公司最新发布的Phi-3系列语言模型&#xff0c;以其卓越的性能和小巧的体积&#xff0c;打破了…

c++习题01-ljc的暑期兼职

目录 一&#xff0c;题目描述 二&#xff0c;思路 三&#xff0c;伪代码 四&#xff0c;流程图 五&#xff0c;代码 一&#xff0c;题目描述 二&#xff0c;思路 1&#xff0c;根据题目要求需要声明4个变量&#xff1a;a,b,c,d ;牛奶价格a&#xff0c;活动要求b&…

【基础知识10】label与input标签

label标签说明 HTML元素表示用户界面中某个元素的说明 将一个和一个元素相关联主要有这些优点&#xff1a; 标签文本不仅与其相应的文本输入元素在视觉上相关联&#xff0c;程序中也是如此。这意味着&#xff0c;当用户聚焦到这个表单输入元素时&#xff0c;屏幕阅读器可以读…

柯桥商务英语培训under是“在下面”,dog是“狗”,那underdog是什么意思?

英语中有很多单词 拆开看都认识 但合在一起意思就变了 就比如这个表达&#xff1a;underdog 大家都知道&#xff1a;under是下面&#xff0c;dog是狗 那么underdog是啥意思呢&#xff1f; 在小狗下面&#xff1f; 还是活得连狗都不如&#xff1f; 当然没有那么简单 但我…

flask 接收vuejs element el-upload传来的多个文件

el-upload通过action指定后端接口,并通过name指定传输的文件包裹在什么变量名中 <el-uploadclass="upload-demo"dragaction="https://ai.zscampus.com/toy/upload"multiplename="fileList":limit="10"accept=

【LinuxC语言】网络编程中粘包问题

文章目录 前言什么叫做粘包问题粘包问题如何解决?总结前言 在进行网络编程时,我们经常会遇到一个非常常见但又往往被忽视的问题,那就是"粘包"问题。粘包是指在基于TCP/IP协议的数据传输过程中,由于TCP/IP协议是基于字节流的,这就可能会导致多个数据包被一起接收…

Linux-笔记 使用SCP命令传输文件报错 :IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

前言 使用scp命令向开发板传输文件发生报错&#xff0c;报错见下图; 解决 rm -rf /home/<用户名>/.ssh/known_hosts 此方法同样适用于使用ssh命令连接开发板报错的情况。 参考 https://blog.csdn.net/westsource/article/details/6636096

java时间处理工具类

效果 最近7天&#xff1a;2024年6月21日-2024年6月27日过去一周、最近一周&#xff1a;2024年6月16日-2024年6月22日过去三个月&#xff1a;2024年3月-2024年6月近半年、过去半年&#xff1a;2023年12月-2024年6月去年&#xff1a;2023年1月-2023年12月过去3年&#xff1a;202…