Spring Cloud Alibaba 实操 (十四) Sentinel对Gateway网关进行限流

简介: Sentinel对Gateway网关进行限流

前言

服务网关在微服务架构中充当了请求访问入口的角色,是非常重要的一个部分,在高并发的系统中我们通常会在网关层通过流控降级等手段把多余的请求拒绝在外来防止微服务被高并发请求打垮,在之前我们有讨论过《服务网关Spring Cloud Gateway》和 《Sentinel流控》,一个是服务网关,一个是流控降级,本篇文章要讨论的是如何使用Sentinel对Gateway进行流控

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

Gateway整合Sentinel

alibaba专门为gateway提供了一个适配包“spring-cloud-alibaba-sentinel-gateway”,我们导入它就可以完成对网关的流控工作

1.导入依赖

<!--整合gateway的依赖 -->
 <dependency>
     <groupId>com.alibaba.cloud </groupId>
     <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
     <version>2.1.0.RELEASE</version>
 </dependency>
 <!--sentinel基础依赖-->
 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
 </dependency>

2.Sentinel地址配置

server:
  port: 10100
spring:
  application:
    name: gateway-service
  cloud:
    sentinel:
      transport:
        dashboard: 127.0.0.1:1111

3.配置流控规则

当通过网关发起访问时,Sentinel的控制台就可以看网关服务,我们可以对请求的资源设定流控规则
image.png

然后频繁访问被限流的资源,限流效果如下:
image.png

4.定义限流结果

当请求被限流了,会抛出FlowException异常,这样的异常信息对用户不友好,我们需要制定限流响应结果,在Gateway中Sentinel提供了GatewayCallbackManager管理器来设置限流结果处理,如下:

@Configuration
public class SentinelConfig {
   
   
    public SentinelConfig(){
   
   
        GatewayCallbackManager.setBlockHandler(new BlockRequestHandler() {
   
   
            @Override
            public Mono<ServerResponse> handleRequest(ServerWebExchange serverWebExchange, Throwable throwable) {
   
   
                return ServerResponse.ok().body(Mono.just("限流啦,请求太频繁"),String.class);
            }
        });
    }
}

再次频繁访问资源,测试限流效果如下:
image.png

到这里文章结束

目录
相关文章
|
24天前
|
监控 Java Sentinel
使用Sentinel进行服务调用的熔断和限流管理(SpringCloud2023实战)
Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
45 3
|
26天前
|
Java 开发者 Sentinel
Spring Cloud系列——使用Sentinel进行微服务保护
Spring Cloud系列——使用Sentinel进行微服务保护
33 5
|
1月前
|
监控 Java API
深入解析 Spring Cloud Sentinel:分布式系统流量控制与熔断降级的全面指南
深入解析 Spring Cloud Sentinel:分布式系统流量控制与熔断降级的全面指南
32 0
深入解析 Spring Cloud Sentinel:分布式系统流量控制与熔断降级的全面指南
|
1月前
|
Java 应用服务中间件 nginx
【Azure Spring Apps】Spring App部署上云遇见 502 Bad Gateway nginx
在部署Azure Spring App后,用户遇到502 Bad Gateway错误,问题源于Nginx。解决方案是检查并关闭Spring App的ingress-to-app TLS配置,因为若未启用HTTPS访问,Nginx通过HTTPS访问应用会导致此错误。
|
17天前
|
Java API 开发者
Spring Cloud Gateway中的GlobalFilter:构建强大的API网关过滤器
Spring Cloud Gateway中的GlobalFilter:构建强大的API网关过滤器
23 0
|
17天前
|
监控 Java API
Spring Cloud 之 GateWay
Spring Cloud Gateway 作为API网关,处理客户端与微服务间的非业务逻辑,如权限验证、监控、路由转发。它通过Route(含ID、目标URI、Predicate和Filter)、Predicate(匹配请求条件)和Filter(请求前/后处理)实现动态路由。工作流程包括客户端请求-&gt;Gateway Handler Mapping-&gt;过滤器链-&gt;服务转发-&gt;响应过滤-&gt;回客户端。过滤器用于请求拦截、响应处理,如参数校验、权限检查。动态路由允许以服务名创建路由,实现服务发现。预设和全局过滤器用于特定或所有路由的定制逻辑,例如登录验证和请求头管理。
|
18天前
|
Java Nacos 网络架构
Spring Cloud gateway 网关四 动态路由
Spring Cloud gateway 网关四 动态路由
|
21天前
|
监控 Java API
4.服务网关之Spring Cloud Gateway
4.服务网关之Spring Cloud Gateway
28 0
|
1月前
|
负载均衡 Java API
Spring Cloud Gateway 详解:构建高效的API网关解决方案
Spring Cloud Gateway 详解:构建高效的API网关解决方案
30 0
|
存储 JSON Java
Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则
Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则
451 0
Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则

热门文章

最新文章