上次介绍了使用Zuul通过一个过滤器实现权限校验的功能 。在互联网应用高并发的情况下,由于请求数量过多可能导致服务器无法承载而出现故障 。这种情况就需要对请求数量进行限制,让系统在有限的请求数下正常运行 。本篇将介绍如何通过Zuul-ratelimit对用户请求进行限流 。
系统配置本篇不再赘述zuul API Gateway的配置和启动了,只把为实现限流功能需要添加的配置进行介绍 。感兴趣的朋友可以到专栏中查看API网关的详细配置 。
文章插图
1、 添加spring-cloud-zuul-ratelimit依赖 。
文章插图
【10行配置就能实现微服务框架的API访问限流】
2、 全局限流配置
文章插图
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、 特定服务限流配置
文章插图
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已经配置过的路由,如下图:
文章插图
运行测试好了,现在来测试一下 。我们访问/wf/workflow/getWorkflow这个地址,前两次返回正常的结果 。第3次返回如下:
文章插图
以上即为通过zuul-ratelimit实现的全局和具体服务的限流配置策略 。建议收藏 。
推荐阅读
- 运动|吃素就能减肥?长期下去会出现这5个后果,每一个都并不好对付
- 如何在Linux中配置Redis服务并设置为开机自启
- 如何在 iOS 设备上配置 hosts
- 企业骨干网络如何提高链路可靠性,核心交换机配置静态链路聚合
- nginx反向代理配置两个不同服务器
- 红米k50参数配置 红米k50多久出来
- 华为交换机路由器配置本地MT特性
- Soul高可用网关:配置缓存三大同步策略
- springboot配置文件切换讲解
- golang - ini配置文件操作