-
商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制
-
用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制
那Sentinel是怎么进行热点参数限流的呢?
热点参数
我们先对代码进行一些改造,在控制器增加个方法
我们增加了testHot方法,并在此方法上面增加了注解@SentinelResource;对于 @SentinelResource 注解方式定义的资源,若注解作用的方法上有参数,Sentinel 会将它们作为参数传入 SphU.entry(res, args)。
比如上面的方法里面 a 和 b 会分别作为第一个和第二个参数传入 Sentinel API,从而可以用于热点规则判断。
请求接口
http://localhost/test-hot?a=1&b=2
在Sentinel控制台簇点链路里面多了个hot资源名
热点规则
我们来设置一下hot的热点规则
限流模式只有QPS模式(这才叫热点)。
参数索引代表@SentinelResource注解的方法参数,0代表第一个参数,1代表第二个参数。
单机阀值以及统计窗口时长表示在此窗口时间超过阀值就限流。
上图的含义就是第一个参数有值的话,1秒的QPS为1,超过就限流
上面请求/test-hot是带上了第一个参数a,触发了热点限流
上面请求/test-hot带上了第二个参数b,没有第一个参数a,不触发热点限流
特定参数
上文中我们配置了针对参数索引的热点限流,有时候我们需要对参数的值做一些特殊的规格;如:上文表示了请求地址如果有参数a,就触发热点限流QPS为1。
但有业务需要参数a=5时,QPS要放大(即业务需要a=5时,阀值调大点,如:100);应用的场景某些秒杀商品,分配给他们大点的QPS。那怎么设置?
Sentinel控制台要在热点规则那边,点击编辑按钮
参数例外项:上图配置的含义就是hot资源名配置了第一个参数进行热点限流,阀值为1;但第一参数值为5时,限流阀值变为100。
注意参数的类型要跟方法中的参数一致
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后
最后,强调几点:
- 1. 一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你的简历来问的; 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试之前好好回顾一下自己所做的项目;
- 2. 和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;
- 3. 注意自己开源的Github项目,面试官可能会挖你的Github项目提问;
我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!
以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目。
面试答案
66)]
[外链图片转存中…(img-KUC5MQOC-1711789362867)]
[外链图片转存中…(img-fIiFy4Ez-1711789362867)]