专栏首页技术开发——你我他Sentinel——URL资源清洗

Sentinel——URL资源清洗

目标:Sentinel的基本应用 工具:IDEA--2020.1、Sentinel Maven Spring Boot 学习目标:学习基于Sentinel Dashboard来实现URL资源清洗 本次学习的工程下载链接放到文本最后面

Sentinel中的HTTP服务的限流默认由Sentinel—Web-Servlet包中的CommonFilter来实现,这个Filter会把每个不同的URL都作为不同的资源来处理

在下面的这段代码中,提供携带{id}参数的REST风格API,对于每一个不同的{id},URL也都不一样,所以在默认情况下Sentinel会把所有的URL当做资源来进行流控

@RestController
public class UrlCleanController {

    @GetMapping("/clean/{id}")
    public String clean(@PathVariable("id")int id){
        return "hello clean";
    }

}

这种会导致两个问题:

  • 限流统计不准确,实际需要是控制clean方法总的QPS,结果统计的是每个URL的QPS
  • 导致Sentinel中资源数量过多,默认资源数量的阈值是6000,对于多出的资源规则将不会生效

正对这个问题可以通过URLCleaner接口来实现资源清洗,也就是对于/clean/{id}这个URL,我们可以统一归类到/clean/*资源下 ,实现UrlCleaner接口,并重写clean方法。

@Service
public class CustomerUrlCleaner implements UrlCleaner {
    @Override
    public String clean(String s) {
        if (StringUtils.isEmpty(s)){   //判断字符是否为空
            return s;
        }
        if(s.startsWith("/clean/")){   //判断起始的是不是以/clean/开始
            return "/clean/*";
        }
        return s;
    }
}

接下来启动Sentinel服务,访问 http://localhost:8080/clean/1 然后我们进入Sentinel Dashboard里面对资源进行限流。

添加成功界面如下

访问 http://localhost:8080/clean/1 和 http://localhost:8080/clean/2 后面的数字自己随便写一个就行,我们多次快速刷新访问这些界面,发现资源都被归为一类了 效果去Sentinel Dashboard里面自行观看 效果如下图所示


下载链接:sentinel-sample3.rar

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Sentinel集成Nacos实现动态流控规则

    目标:Sentinel的基本应用 工具:IDEA--2020.1、Sentinel Maven Nacos 学习目标:学习Sentinel集成Nacos实现动态...

    背雷管的小青年
  • Sentinel的基本应用

    目标:Sentinel的基本应用 工具:IDEA--2020.1、Sentinel Maven 学习目标:学习Sentinel的限流设置 本次学习的工程下载链接...

    背雷管的小青年
  • Sentinel——自定义URL限流异常

    目标:Sentinel的基本应用 工具:IDEA--2020.1、Sentinel Maven 学习目标:学习Sentinel的自定义URL限流异常 本次学习的...

    背雷管的小青年
  • Android中关于dip和px以及转换的总结

    我们在页面布局的时候,经常会设置容器的长度,但是到底该使用哪个作为长度的单位而懊恼。在Android中支持的描述大小区域的类型有以下几种: px(pixels)...

    欢醉
  • ARKit应用榜单新鲜出炉!游戏和实用性应用最受偏爱

    VRPinea
  • IntelliJ IDEA License Server本地搭建教程

    IntelliJ IDEA是JetBrains公司的一款IDE,主要用于java。 同系列有用于Ruby的RubyMine、Python的PyCharm、Jav...

    凯哥Java
  • (转)比AtomicLong还高效的LongAdder源码解析

    接触到AtomicLong的原因是在看guava的LoadingCache相关代码时,关于LoadingCache,其实思路也非常简单清晰:用模板模式解决了缓存...

    屈定
  • L型分布:揭开APP市场格局真相┃APP创业必读

     移动互联网已经红海,APP创新创业需要寻找新的方向。新的方向在哪里?一是面向互联网+,比如分享经济领域;二是面向未来技术,比如IOT。但同时,创新必须由同质化...

    腾讯研究院
  • LeetCode 463. 岛屿的周长

    网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。

    Michael阿明
  • Java Object流和Propertise流

    用户7625070

扫码关注云+社区

领取腾讯云代金券