springcloud2+gateway网关配置中心2(包含熔断,jwt认证,限流)

本文深入探讨网关的重试功能、Jwt拦截器过滤机制及限流策略,包括接口、用户和IP限流的具体配置方法,旨在帮助读者理解并掌握网关在微服务架构中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面介绍1未讲完的网关功能

   1重试功能,配置如下

       

这里可以不写实现类,采用默认的方式配置,然后发送一个http的GET请求,试着断开服务端查看后台:

 证明配置正确,起作用了!

2Jwt拦截器过滤

直接配置在规则路由routes下面,然后写实现类

所写的实体类都是要集成AbstractGatewayFilterFactory网关拦截器工厂接口。因为都是在filters拦截器下的配置属性

这里为啥不做认证配置呢,因为我的项目目前基础信息的auth2的认证服务和资源服务都是放在了一个服务上,所以这里面只需要对请求头携带token判断,简化了网关所需要的信息,但也带出来一个问题,如何来让未携带token认证服务通过网关接口呢,目前的设计思路如下

1直接在启动类手写Bean类,可以绕过配置服务的规则路由,这样就可以拿到认证Token

2单独为login配置一套,参照认证服务简单的模板,2种方法效果一致

3限流

  

限流几种方式:接口限流,用户限流,IP限流

创建配置文件GatewayConfiguration如下

package com.wjx.gateway.Controller.common.config;

import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import reactor.core.publisher.Mono;

/**
 * 配置限流key
 */
@Configuration
public class GatewayConfiguration {
    /**
     * 接口限流操作
     * @return
     */
    @Bean(name="apiKeyResolver")
    public KeyResolver apiKeyResolver() {

        //根据api接口来限流
        return exchange ->
             Mono.just(exchange.getRequest().getPath().value());

    }

    /**
     * ip限流操作
     * @return
     */
    @Bean
    public KeyResolver ipKeyResolver() {
        return exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getHostName());
    }

    /**
     * 用户限流
     * 使用这种方式限流,请求路径中必须携带userId参数。
     * @return
     */
//    @Bean
//    KeyResolver userKeyResolver() {
//        return exchange -> Mono.just(exchange.getRequest().getQueryParams().getFirst("userId"));
//    }
}

其实这样配置就应该可以实现限流的目的了(由于本人电脑没安装JMTER,性能有点差跑不动这几个项目了,没测试)

借鉴其他人写的方法,其实也可以对限流进行具体的,因为不能测试,所以没做深入研究,下面只提供方法

去掉默认的限流限定

继承AbstractGatewayFilterFactory工厂类,写一个拦截器类和一个限流类

这样可以比配置文件更加做到细致,如果有人做到了这一步,欢迎把测试结果告诉我,谢谢!!!


 

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值