当前位置:首页 > 后端开发 > SpringCloudGateway实现网关限流 二种方式

SpringCloudGateway实现网关限流 二种方式

6个月前 (05-27)37

欢迎大家进群,一起探讨学习

SpringCloudGateway实现网关限流 二种方式 _ Java侠

微信公众号,每天给大家提供技术干货

SpringCloudGateway实现网关限流 二种方式 _ Java侠

博主技术笔记

博主网站地址1

博主网站地址2


博主开源微服架构前后端分离技术博客项目源码地址,欢迎各位star


## 1.Maven依赖
		 <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-spring-cloud-gateway-adapter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

2.GatewayConfiguration

package com.yoostar.gateway.config;

import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayFlowRule;
import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayRuleManager;
import com.alibaba.csp.sentinel.adapter.gateway.sc.SentinelGatewayFilter;
import com.alibaba.csp.sentinel.adapter.gateway.sc.exception.SentinelGatewayBlockExceptionHandler;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.codec.ServerCodecConfigurer;
import org.springframework.web.reactive.result.view.ViewResolver;

import javax.annotation.PostConstruct;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 网关限流
 *
 * @author bright
 */
@Configuration
public class GatewayConfiguration {
     

    private final List<ViewResolver> viewResolvers;
    private final ServerCodecConfigurer serverCodecConfigurer;

    public GatewayConfiguration(ObjectProvider<List<ViewResolver>> viewResolversProvider,
                                ServerCodecConfigurer serverCodecConfigurer) {
     
        this.viewResolvers = viewResolversProvider.getIfAvailable(Collections::emptyList);
        this.serverCodecConfigurer = serverCodecConfigurer;
    }

    @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    public SentinelGatewayBlockExceptionHandler sentinelGatewayBlockExceptionHandler() {
     
        return new SentinelGatewayBlockExceptionHandler(viewResolvers, serverCodecConfigurer);
    }

    @Bean
    @Order(-1)
    public GlobalFilter sentinelGatewayFilter() {
     
        return new SentinelGatewayFilter();
    }

    @PostConstruct
    public void doInit() {
     
        initGatewayRules();
    }

    /**
     * 1秒只能只运行5个QPS
     */
    private void initGatewayRules() {
     
        Set<GatewayFlowRule> rules = new HashSet<>();
        for (int i = 1; i < 13; i++) {
     
            rules.add(new GatewayFlowRule("service-" + i)
                    .setCount(1)
                    .setIntervalSec(5)
                    .setBurst(2)
            );
        }
        GatewayRuleManager.loadRules(rules);
    }
}

注意

SpringCloudGateway实现网关限流 二种方式 _ Java侠
3.测试
SpringCloudGateway实现网关限流 二种方式 _ Java侠
SpringCloudGateway实现网关限流 二种方式 _ Java侠
SpringCloudGateway实现网关限流 二种方式 _ Java侠

第二种方式

maven 依赖

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

SpringCloudGateway实现网关限流 二种方式 _ Java侠

作者:Bright1668
来源链接:https://blog.csdn.net/qq_40942490/article/details/108854424

标签: Gateway

“SpringCloudGateway实现网关限流 二种方式” 的相关文章

502 (Bad Gateway) 原因及解决方法

名词解释 502 是 报错类型 bad gateway 错误的网关。 产生原因 连接超时 我们向服务器发送请求 ,由于服务器当前链...

SpringCloud gateway原理分析

SpringCloud gateway原理分析

SpringCloud gateway原理分析 前置说明 使用说明...

Gateway快速入门

Gateway快速入门

1、创建一个api-gateway的工程并加入依赖 <!--加入gateway的依赖--> <dependency> <group...

【微服务SpringCloud】:Gateway 网关

【微服务SpringCloud】:Gateway 网关

文章目录 1、什么是 API 网关? 2、什么是 Gateway ?...

springcloud gateway 整合swagger3.0.0

springcloud gateway 整合swagger3.0.0

版本和说明 swagger:3.0.0 gateway微服务的使用方式和单应用没啥区别,只是多了设置右上角模块的操作。 以...

spring cloud gateway-动态路由精讲篇

spring cloud gateway-动态路由精讲篇

spring cloud gateway-动态路由精讲篇 1.为什么需要动态路由 2.gateway网关...

Gateway实战:SpringCloud-Gateway组件使用

Gateway实战:SpringCloud-Gateway组件使用

1.什么是服务网关 1.说明 网关统一服务入口,可方便实现对平台众多服务...

微服务网关(gateway)概述 与 嵌入式 Zuul 反向代理

微服务网关(gateway)概述 与 嵌入式 Zuul 反向代理

目录 微服务网关 gateway 概述 路由器网关 Zuul 概述 嵌入式 Zuul 反向代理 ignored-services 不代理指定服务...

十五.SpringCloudAlibaba极简入门-Gateway网关整合Nacos

十五.SpringCloudAlibaba极简入门-Gateway网关整合Nacos

前言 这一篇文章算是补充把,之前的Spring Cloud Gateway 是以Eureka为注册中心进行整合的,见《服务网关Gateway》...

Spring - Spring Cloud Gateway网关实战及原理解析

Spring - Spring Cloud Gateway网关实战及原理解析

API 网关 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接...