springcloud 并发_SpringCloud-Zuul高并发请求下的限流处理

高并发的情况肯定是实际场景中经常碰到的情况,那么这种情况下限流措施肯定是必须的,本文我们就来看看zuul中限流的处理

高并发的限流处理

1.创建项目

创建一个SpringCloud项目

8c9cbf23ceb9262b3c917f1c90d79daa.png

2.添加依赖

必须要添加 ratelimit依赖

org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-eureka org.springframework.cloud spring-cloud-starter-zuul com.marcosbarbero.cloud spring-cloud-zuul-ratelimit 1.3.4.RELEASE

3.配置文件

在配置文件中添加限流的属性,分为具体限流和全局限流

server.port=9030# eureka注册中心的配置eureka.client.serviceUrl.defaultZone=http://dpb:123456@eureka1:8761/eureka/,http://dpb:123456@eureka2:8761/eureka/# 定义的两个路由规则zuul.routes.e-book-product.path=/product/**zuul.routes.e-book-product.serviceId=e-book-productzuul.routes.e-book-order.path=/order/**zuul.routes.e-book-order.serviceId=e-book-order

3.1 全局限流

针对每一个服务都有效果

#全局配置限流zuul.ratelimit.enabled=true##60s 内请求超过 3 次,服务端就抛出异常,60s 后可以恢复正常请求zuul.ratelimit.default-policy.limit=3zuul.ratelimit.default-policy.refresh-interval=60##针对 IP 进行限流,不影响其他 IPzuul.ratelimit.default-policy.type=origin

分别启动product和order两个服务,然后启动网关服务,访问测试如下

product服务:

28390bf4bd01db23732a26c6798abe39.png

一分钟访问的第四次

6ced49d835f2326b5638aa3fb30bb846.png

order服务:正常访问

5bd233f4c4992dfd1a7fc748d1a15203.png

一分钟内访问的第四次

bdd94255fd494056a81eeff86894b5b3.png

全局限流配置对每个服务都有效果

3.2 局部限流

针对特定的服务指定的限流策略

# 局部限流:针对某个服务进行限流##开启限流zuul.ratelimit.enabled=true##60s 内请求超过 3 次,服务端就抛出异常,60s 后可以恢复正常请求zuul.ratelimit.policies.e-book-product.limit=3zuul.ratelimit.policies.e-book-product.refresh-interval=60##针对某个 IP 进行限流,不影响其他 IPzuul.ratelimit.policies.e-book-product.type=origin

以上配置只针对e-book-product的服务一分钟内最多访问3次,超过就会限流,对其他服务就没有影响。效果可自行演示。

4.网关限流参数

786999c6b8ea891ad4caa435518a975d.png

5.异常处理

增对error异常,我们可以提供一个全局异常处理器

@RestControllerpublic class ExceptionHandler implements ErrorController{ @Override public String getErrorPath() {  return "error"; }  @RequestMapping(value="/error") public String error(){ return "{"result":"访问太多频繁,请稍后再访问!!!"}"; }}

限流的提示如下:

9b48847bf5be1d0c908605c85e53f899.png

关注我,后续更多干货奉上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值