<返回更多

10行配置就能实现微服务框架的API访问限流

2019-09-26    
加入收藏

上次介绍了使用Zuul通过一个过滤器实现权限校验的功能。在互联网应用高并发的情况下,由于请求数量过多可能导致服务器无法承载而出现故障。这种情况就需要对请求数量进行限制,让系统在有限的请求数下正常运行。本篇将介绍如何通过Zuul-ratelimit对用户请求进行限流。

系统配置

本篇不再赘述zuul API Gateway的配置和启动了,只把为实现限流功能需要添加的配置进行介绍。感兴趣的朋友可以到专栏中查看API网关的详细配置。

10行配置就能实现微服务框架的API访问限流

 

1、 添加spring-cloud-zuul-ratelimit依赖。

10行配置就能实现微服务框架的API访问限流

 

2、 全局限流配置

10行配置就能实现微服务框架的API访问限流

 

zuul.ratelimit.enabled=true:限流开关,true打开限流。

zuul.ratelimit.default-policy.limit=5:全局限流策略,在一个单位时间窗口内的请求次数5次。

zuul.ratelimit.default-policy.quota=5:可选,在一个单位时间窗口内的请求时间5秒。

zuul.ratelimit.default-policy.refresh-interval=10:全局限流策略,一个单位时间窗口10秒。

以上配置描述的内容简言之就是:在10秒内只允许访问5次,如果10秒内访问次数超过5,则会返回Too many requests。

3、 特定服务限流配置

10行配置就能实现微服务框架的API访问限流

 

zuul.ratelimit.policies.workflow.limit=2:服务限流策略,在一个单位时间窗口内请求的次数2次。

zuul.ratelimit.policies.workflow.quota=1:可选,在一个单位时间窗口内的请求时间5秒。

zuul.ratelimit.policies.workflow.refresh-interval=3:服务限流策略,一个单位时间窗口3秒。

以上配置简言之就是:在workflow这个服务的请求上,3秒内允许访问2次,如果3秒内访问次数超过2,则返回Too many requests。这个3秒内限制2次请求只限于workflow这个路由对应的服务请求,其他服务的请求限流策略还是10秒内5次的限制。这就是全局和具体服务限流策略的区别。

其中重点是“workflow”,它是前面zuul已经配置过的路由,如下图:

10行配置就能实现微服务框架的API访问限流

 

运行测试

好了,现在来测试一下。我们访问/wf/workflow/getWorkflow这个地址,前两次返回正常的结果。第3次返回如下:

10行配置就能实现微服务框架的API访问限流

 

以上即为通过zuul-ratelimit实现的全局和具体服务的限流配置策略。建议收藏。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>