网站首页 > 精选教程 正文
Sentinel
流控规则
配置流量控制规则
阈值种类
QPS:每秒钟请求数(request per second)
线程数:每秒钟线程数
流控模式
直接:就是直接触发流控效果 关联:就是关联资源达到了流控阈值,我本身进行流控(订单服务限流,那么我也进行限流) 链路:更加细粒度的(如限制了service中的一个方法,在controller中有两个方法都可以调用它,我们针对于controller其中一个进行限制,而另一个则不限制)【service中方法为abc,controller中方法为f1与f2,我们链路设置f1,那么我们频繁访问f1则触发限流,而无论怎么访问f2都不会触发限流(也就是说当前abc方法是针对于f1调用的限流,限流的是f1调用abc方法的这条链路!)】
流控效果
快速失败:直接给出友好提示 warm up:QPS如果突然间很高,这种方式是根据我们数据的预热时长,先处理1/3,然后在预热时间内,逐步提升QPS可以达到阈值(防止QPS突然间的升高,导致的问题) 排队等待:无论有多少个请求来,就一个个处理,超过超时时间则报超时
降级规则
程序出现问题,触发降级
RT
平均响应时间(秒级)
平均响应时间超出阈值且在时间窗口内通过的请求>=5,二者同时满足则触发降级,在窗口期后关闭断路器(RT默认最大为4900【一般都足够了】)
异常比例
QPS>=5且异常比例(秒级统计)超过阈值时触发降级,时间窗口结束后,关闭降级
异常数
异常数超过阈值时(分钟统计),触发降级;时间窗口结束后,关闭降级
热点规则
针对于某个方法,某个参数进行热点key的降级
资源名,写程序中标注@SentinelRescource注解设置的名字
@SentinelResource(value = "testHotKey",blockHandler = "deal_testHotKet")
这里value写什么,在配置里我们就需要配置什么
违背了配置的热点规则,则触发deal_testHotKet方法
参数索引则代表该方法第几个参数(索引从0开始)
高级选项中,选择参数的类型可以设置如果当前参数值为某个值时可以接收更高的QPS
可以完成效果是:
http://codejiejie.com?a=1 每秒钟可以承受3个QPS
http://codejiejie.com?a=2 每秒钟可以承受100个QPS
http://codejiejie.com?a=3 每秒钟可以承受200个QPS
其余的任何包含参数a的最高接收3个QPS,不包含参数a的不会触发热点规则,即无论如何访问都不会降级
系统规则
系统的大门,站在整个系统的角度来看的,如果不满足则直接触发降级(该系统下全部降级)
@SentinelResource中
fallback管运行时异常
blockHandler管配置违规
持久化
将规则持久化到nacos,需要加配置,并且自己需要在nacos建立配置,自己写入规则(...,这个属实不太友好...)
整个过程就是:服务启动,注册到nacos,从nacos拉去配置,sentinel获取这些配置,作为当前服务的配置规则生效!
如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,
咱们下期见。
猜你喜欢
- 2024-11-17 SpringCloudAlibabaSentinel熔断限流
- 2024-11-17 2022届秋招Java岗高频面试题盘点,老司机也未必全会,真的太卷了
- 2024-11-17 2022春招,Java面试项目推荐,15个项目吃透两个offer拿到手软
- 2024-11-17 微服务网关如何防止雪崩?阿里开源项目之Sentinel限流、熔断
- 2024-11-17 SpringCloud之Hystrix服务降级
- 2024-11-17 2022年腾讯首发Java岗分布式面试真题,助力金三银四我是认真的
- 2024-11-17 一个可供参考的Java高并发异步应用案例--转
- 2024-11-17 面试官:聊聊服务熔断降级Sentinel
- 2024-11-17 2019年高级Java程序员面试题汇总,含个人答案总结
- 2024-11-17 微服务之熔断(实践)
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)