美文网首页
spring-cloud-gateway使用-限流

spring-cloud-gateway使用-限流

作者: sleepforests | 来源:发表于2019-07-16 13:24 被阅读0次

代码在:
https://gitee.com/sleepforests/spring-cloud-gateway-demo

spring cloud gateway内置了限流filter,通过配置及简单开发即可完成限流逻辑。

scg使用令牌桶算法来实现限流,需要使用redis来支持集群模式。

下面是最简单的一个配置:

    filters:
    - name: RequestRateLimiter
      args:
        key-resolver: '#{@appIdKeyResolver}'
        redis-rate-limiter.replenishRate: 1
        redis-rate-limiter.burstCapacity: 3

其中,key-resolver是限流的key,比如我们使用host来计算流量、使用userId来计算流量、使用appId计算流量等。scg提供了一个接口,我们来实现,这里配置的是bean的id。

接口如下:

/**

  • @author Spencer Gibb
    */
    public interface KeyResolver {
    Mono<String> resolve(ServerWebExchange exchange);
    }

这里我们使用host来限流
public class AppIdKeyResolver implements KeyResolver {
@Override
public Mono<String> resolve(ServerWebExchange exchange) {
return Mono.just(exchange.getRequest().getQueryParams().getFirst("appId"));
}
}

@Bean
public AppIdKeyResolver appIdKeyResolver() {
return new AppIdKeyResolver();
}

几点问题:
1、依赖redis,对于高qps的情况下其实有问题;
2、有一个限流的lua脚本,可以上去看看具体的逻辑,我没怎么看;
3、限流之后直接给用户报错,不知道有没有扩展点能提供一个友好的提示给用户,或者其他兜底措施;

相关文章

  • spring-cloud-gateway使用-限流

    代码在:https://gitee.com/sleepforests/spring-cloud-gateway-d...

  • 限流降级方案

    限流算法 并发数限流 计数器并发数限流:使用共享变量实现 信号量:使用java中的Semaphore QPS限流 ...

  • java信号量限流

    1、单机使用Semaphore进行限流: 使用Semaphore信号量进行限流accquire tryAcqui...

  • spring-cloud-gateway使用其他容器遇到的问题

    在使用spring-cloud-gateway的时候,想使用其他的web容器,但是会遇到一个报错 笔者折腾了半天、...

  • spring-cloud-gateway GlobalFilte

    使用spring-cloud-gateway GlobalFilter做访问控制拦截出现以下问题,做一个记录。 ...

  • 使用Redis实现限流

    使用Redis实现限流 原理:使用Redis的Hash数据结构,把对应的key、接口url、限流规则存放进redi...

  • 限流幂等框架

    限流和幂等框架设计和使用说明 1. 背景介绍 1.1 限流 在早期的计算机领域,限流技术(time limitin...

  • 基于Redis的限流系统的设计

    本文讲述基于 Redis的限流系统的设计,主要会谈及限流系统中限流策略这个功能的设计;在实现方面,算法使用的是令牌...

  • 基于Redis的限流系统的设计

    本文讲述基于Redis的限流系统的设计,主要会谈及限流系统中限流策略这个功能的设计;在实现方面,算法使用的是令牌桶...

  • 基于Redis的限流系统的设计【转】

    基于Redis的限流系统的设计,主要会谈及限流系统中限流策略这个功能的设计;在实现方面,算法使用的是令牌桶算法来,...

网友评论

      本文标题:spring-cloud-gateway使用-限流

      本文链接:https://www.haomeiwen.com/subject/vjktcctx.html