java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Sentinel链路模式规则无效

解决Sentinel链路模式规则无效问题

作者:后会无期77

本文介绍了如何在Spring Cloud Alibaba项目中使用Sentinel链路流控规则,并解决规则不生效的问题,通过关闭Sentinel过滤器,可以避免重复统计请求

前言

如何使用Sentinel链路流控规则?

如何解决链路模式规则不生效?

解决方案

当前项目的版本信息

1.引入依赖

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-web-servlet</artifactId>
        </dependency>

2.关闭sentinel的过滤器

(如果不设置或者不关闭,会出现重复统计问题)

spring:
  cloud:
    sentinel:
      filter:
        enabled: false

3.添加上下文过滤器

import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FilterContextConfig {
    @Bean
    public FilterRegistrationBean sentinelFilterRegistration() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new CommonFilter());
        registrationBean.addUrlPatterns("/*");
        registrationBean.addInitParameter(CommonFilter.WEB_CONTEXT_UNIFY, "false");
        registrationBean.setName("sentinelFilter");
        registrationBean.setOrder(1);
        return registrationBean;
    }
}

4.编写测试代码

5.启动服务器

请求一下上面编辑的两个接口,查看sentinel-dashboard控制台,显示出两条链路

6.编写链路规则,并保存

下图表示链路/hello1对findById这个资源的访问为每秒1次。

7.请求/hello1这个接口

频繁刷新,会出现失败。而频繁请求/hello2这条链路则不会失败。

问题

如果不关闭sentinel过滤器会发生什么?

发送一次请求,sentinel就会统计两次请求。

所以请注意关闭sentinel过滤器

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文