此处只做个简单的springcloud中添加sentinel的demo
1、下载sentinel的jar,访问网址:https://github.com/alibaba/Sentinel/releases
2、找到本地jar文件夹,使用cmd或者终端中打开,执行java -jar sentinel-dashboard-1.8.0.jar
启动完成
访问可视化页面,默认账号密码都是sentinel
此处用的是window的sentinel版本
下面是项目中需要添加的配置:
1、添加jar
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
2、在application.yml中添加
spring: cloud: sentinel: transport: dashboard: 127.0.0.1:8080
3、启动项目,访问项目中任意一个controller接口,就会看到对应接口信息
到此,springcloud的sentinel整合完成。
接下去介绍下,如何将sentinel进行配置持久化
接下去简单介绍下如何利用sentinel的dashboard控制对应接口
一、流控、降级
1、在簇点链路找到对应资源名,点击流控,选择QPS或者线程数,单位是 秒 ,设置单机阈值
流控:QPS:每秒访问数;线程数:也就是时间段内只有对应的线程数处理,超过的线程请求会等待
2、流控模式:直接、关联、链路
①直接:只针对当前资源进行流控,默认模式。
②关联:关联资源的请求超出阈值,那么会对当前资源请求有影响,比如查询和插入两个动作进行流量控制,大促的时候,保证插入成功(下单),查询稍微慢一点
下图所示,当请求/order/add接口的时候,如果1秒请求超过2次,那么就会对/order/flowThread进行限流,请求该接口提示该接口被限流
③链路:选择链路,需要填写入口资源,对入口资源进行控制,比如某个渠道的请求进行限制访问。demo如下
@SentinelResource不止可以作用于controller接口,还能作用于serviceImpl里面的方法
1、需要在配置文件中配置
spring: cloud: sentinel: web-context-unify: false
2、sentinel流控配置如下
简单理解就是:/order/yyy和/order/xxx接口都是getOrder流控的接口,但前者如果每秒超过2次请求就会被流控,而后者就不会,即同一个链路,有些请求会被控制,有些请求不会
3、代码编码如下:
controller
@GetMapping("/xxx") public String xxx(){ String msg = orderService.getOrder(); return "xxx订单 " + msg; } @GetMapping("/yyy") public String yyy(){ String msg = orderService.getOrder(); return "yyy订单 " + msg; }
serviceImpl
@Override @SentinelResource(value = "getOrder",blockHandler = "orderBlockHandler") public String getOrder() { return "order service"; } public String orderBlockHandler(BlockException e){ return "被流控"; }
请求后如下:
标签:请求,流控,springcloud,jar,接口,整合,sentinel,String From: https://www.cnblogs.com/qwg-/p/18427744