Sentinel热点与授权规则

2021-09-06 SentinelSpringCloudAlibaba

热点参数流控规则是一种更细粒度的流控规则, 它允许将规则具体到参数上。

# 热点规则简单使用

@RequestMapping("/order/message3")
@SentinelResource("message3")//注意这里必须使用这个注解标识,热点规则不生效
public String message3(String name, Integer age) {
    return name + age;
}

第2步: 配置热点规则 配置热点规则

第3步: 分别用两个参数访问,会发现只对第一个参数限流了 测试热点规则

# 热点规则增强使用

参数例外项允许对一个参数的具体值进行流控,编辑刚才定义的规则,增加参数例外项 热点规则增强使用 img.png

# 授权规则

很多时候,我们需要根据调用来源来判断该次请求是否允许放行,这时候可以使用Sentinel的来源访问控制的功能。来源访问控制根据资源的请求来源(origin)限制资源是否通过:

  • 若配置白名单,则只有请求来源位于白名单内时才可通过;
  • 若配置黑名单,则请求来源位于黑名单时不通过,其余的请求通过。

上面的资源名和授权类型不难理解,但是流控应用怎么填写呢?

其实这个位置要填写的是来源标识,Sentinel提供了 RequestOriginParser 接口来处理来源。

只要Sentinel保护的接口资源被访问,Sentinel就会调用 RequestOriginParser 的实现类去解析访问来源

# 1.自定义来源处理规则

@Component
public class RequestOriginParserDefinition implements RequestOriginParser {

    @Override
    public String parseOrigin(HttpServletRequest request) {
        String serviceName = request.getParameter("serviceName");
        return serviceName;
    }
}

# 2.授权规则配置

这个配置的意思是只有serviceName=pc不能访问(黑名单)

访问http://localhost:8091/order/message1?serviceName=pc观察结果

上次更新: 1 年前