gateway中的局部过滤器_spring cloud gateway自定义过滤器

本文详细介绍了如何在Spring Cloud Gateway中实现全局过滤器和局部过滤器,包括限流、接口耗时统计、权限检查和指定IP访问等功能。通过自定义过滤器,可以实现对API网关的精细化控制,例如全局过滤器用于限流和统计接口耗时,局部过滤器用于简单的权限检查和IP访问控制。文章提供了具体代码示例和配置方法。
摘要由CSDN通过智能技术生成

在API网关spring cloud gateway和负载均衡框架ribbon实战文章中,主要实现网关与负载均衡等基本功能,详见代码。本节内容将继续围绕此代码展开,主要讲解spring cloud gateway自定义过滤器的功能。本节内容的代码也会提交到GitHub上,注意提交的内容。

本节主要讲解全局过滤器和局部过滤器。注意下面的示例不能作为生产环境的代码,只是简单的演示自定义过滤器的使用方式,无需纠结实现的功能是否完善。下面主要针对不同的过滤器选择几种场景进行代码演示,不代表某个场景就必须使用全局或者局部的过滤器。 全局过滤器: 1、限流:每分钟只能访问5次服务

2、接口用时统计 局部过滤器: 1、简单的权限检查

2、指定IP访问

1、全局过滤器-限流

本节主要演示全局过滤器的用法:实现 GlobalFilter 和 Ordered,重写相关方法,加入到spring容器管理即可,无需配置,全局过滤器对所有的路由都有效。

packagecom.yefengyu.gateway.globalFilter;importio.github.bucket4j.Bandwidth;importio.github.bucket4j.Bucket;importio.github.bucket4j.Bucket4j;importio.github.bucket4j.Refill;importorg.springframework.cloud.gateway.filter.GatewayFilterChain;importorg.springframework.cloud.gateway.filter.GlobalFilter;importorg.springframework.core.Ordered;importorg.springframework.http.HttpStatus;importorg.springframework.stereotype.Component;importorg.springframework.web.server.ServerWebExchange;importreactor.core.publisher.Mono;importjava.time.Duration;importjava.util.Map;importjava.util.concurrent.ConcurrentHashMap;//全局过滤器,实现GlobalFilter接口,和Ordered接口即可。

@Componentpublic class FluidControlGlobalGatewayFilter implementsGlobalFilter, Ordered

{int capacity = 5;//桶的最大容量,即能装载 Token 的最大数量

int refillTokens = 1; //每次 Token 补充量

Duration duration= Duration.ofSeconds(1); //补充 Token 的时间间隔

private static final Map BUCKET_CACHE = new ConcurrentHashMap<>();privateBucket createNewBucket()

{

Refill refill=Refill.greedy(refillTokens, duration);

Bandwidth limit=Bandwidth.classic(capacity, refill);returnBucket4j.builder().addLimit(limit).build();

}

@Overridepublic Monofilter(ServerWebExchange exchange, Gateway

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值