十四.SpringCloudAlibaba极简入门-Sentinel对Gateway网关进行限流

简介: 服务网关在微服务架构中充当了请求访问入口的角色,是非常重要的一个部分,在高并发的系统中我们通常会在网关层通过流控降级等手段把多余的请求拒绝在外来防止微服务被高并发请求打垮,在之前我们有讨论过《服务网关Spring Cloud Gateway》和 《Sentinel流控》,一个是服务网关,一个是流控降级,本篇文章要讨论的是如何使用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的控制台就可以看网关服务,我们可以对请求的资源设定流控规则
在这里插入图片描述
然后频繁访问被限流的资源,限流效果如下:
在这里插入图片描述

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);
            }
        });
    }
}

再次频繁访问资源,测试限流效果如下:
在这里插入图片描述

到这里文章结束

相关文章
|
算法 NoSQL API
SpringCloud&Gateway网关限流
SpringCloud&Gateway网关限流
1416 7
|
NoSQL 算法 Java
面试官:网关如何实现限流?
面试官:网关如何实现限流?
1328 2
面试官:网关如何实现限流?
Sentinel学习圣经:从入门到精通 Sentinel,最全详解 (40+图文全面总结)
尼恩给大家做一下系统化、体系化的梳理,联合社群小伙伴,来一个Sentinel学习圣经:从入门到精通Sentinel。
|
应用服务中间件 nginx 缓存
高并发架构设计三大利器:缓存、限流和降级问题之Nginx作为前置网关进行限流问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之Nginx作为前置网关进行限流问题如何解决
250 0
|
JSON SpringCloudAlibaba Cloud Native
SpringCloudAlibaba:4.3云原生网关higress的JWT 认证
SpringCloudAlibaba:4.3云原生网关higress的JWT 认证
487 1
|
SpringCloudAlibaba Cloud Native Docker
SpringCloudAlibaba:4.1云原生网关higress的搭建
SpringCloudAlibaba:4.1云原生网关higress的搭建
589 1
|
监控 Java 应用服务中间件
【微服务系列笔记】Sentinel入门-微服务保护
Sentinel是一个开源的分布式系统和应用程序的运维监控平台。它提供了实时数据收集、可视化、告警和自动化响应等功能,帮助用户监控和管理复杂的IT环境。本文简单介绍了微服务保护以及常见雪崩问题,解决方案。以及利用sentinel进行入门案例。
523 3
|
Java API 开发者
Spring Cloud Gateway中的GlobalFilter:构建强大的API网关过滤器
Spring Cloud Gateway中的GlobalFilter:构建强大的API网关过滤器
1301 0
|
Java Maven 微服务
使用Spring Cloud Gateway构建微服务网关
以上简要示例介绍了使用Spring Cloud Gateway构建微服务网关的基本步骤,包括添加依赖、配置路由、编写过滤器等。通过配置和自定义过滤器,可以实现请求转发、过滤、鉴权等功能。
426 5
|
负载均衡 Java API
Spring Cloud Gateway 详解:构建高效的API网关解决方案
Spring Cloud Gateway 详解:构建高效的API网关解决方案
749 0