java开发

技术学习笔记

Alibaba Sentinel 的基本入门使用

项目结构

Alibaba Sentinel 的使用

父工程引入相关包

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${alibaba.cloud-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement> 
版本号:
<alibaba.cloud-version>2.2.5.RELEASE</alibaba.cloud-version>
        <spring-cloud.version>Hoxton.SR8</spring-cloud.version>
        <spring-boot.version>2.3.2.RELEASE</spring-boot.version> 

子工程引入相关包
  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-core</artifactId>
        </dependency> 

定义拦截规则
  //定义规则
   @PostConstruct
   public void initFlowRules(){
       List<FlowRule> rules = new ArrayList<>();
       FlowRule flowRule = new FlowRule();
       flowRule.setResource("lanjie");
       flowRule.setGrade(RuleConstant.FLOW_GRADE_QPS);
       flowRule.setCount(2);
       rules.add(flowRule);
       FlowRuleManager.loadRules(rules);
   } 

控制器方法中实现限流
  @RequestMapping("/home")
    public String home(){
        try  {
           SphU.entry("lanjie");
            return  "home";
        } catch (BlockException  e) {
            e.printStackTrace();
            return  "系统被限流";
        }
    }

最后效果

访问地址:
http://localhost:8080/app/home 当前一秒超过2次访问就提示限流

发表评论:

Powered By Z-BlogPHP 1.7.1

唐云飞个人日记