Sentinel(二)网关流控配置

Sentinel(二)网关流控


​ 官网介绍:https://github.com/alibaba/Sentinel/wiki/网关限流

1 引入依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>

sentinel-gateway的版本需要对应alibaba-spring-cloud的版本

结果是怎么弄sentinel的控制台也不显示网关,我是真烦阿里的产品。。文档做得一言难尽

先记录一下,以后用到再搞吧

2 网关流控规则

  • 设置route_id后即可针对某个路由进行流控
  • 在针对请求属性的设置中,可以选择具体参数匹配模式来匹配请求的属性
  • QPS阈值进行流控,流控效果有快速失败匀速排队
image-20230809101547721
新增自定义API分组
  • 可以将多个自定义API进行分组,在进行流控的时候可以针对一组的API进行流控
  • 每个API的匹配模式可以分为:
    • 精确
    • 前缀
    • 正则
  • image-20230809103348947

3 网关层自定义返回

方式一:配置返回格式和返回的状态码:
spring.cloud.sentinel.scg.fallback.content-type=application/json
spring.cloud.sentinel.scg.fallback.response-status=400
方式二:自定义返回
@Configuration
public class SentinelGatewayConfig {
    public SentinelGatewayConfig() {
        GatewayCallbackManager.setBlockHandler(new BlockRequestHandler() {
            @Override
            public Mono<ServerResponse> handleRequest(ServerWebExchange serverWebExchange, Throwable throwable) {
                R error = R.error(BizCodeEnum.TOO_MANY_REQUESTS);
                String s = JSON.toJSONString(error);
                
                return ServerResponse.ok().body(Mono.just(s), String.class);
            }
        });
    }
}
posted @ 2023-09-15 10:06  Tod4  阅读(135)  评论(0编辑  收藏  举报