SpringCloud-Zuul高并发请求下的限流处理
高并发的情况肯定是实际场景中经常碰到的情况,那么这种情况下限流措施肯定是必须的,本文我们就来看看zuul中限流的处理
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了曲水免费建站欢迎大家使用!
高并发的限流处理
1.创建项目
创建一个SpringCloud项目
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-product
zuul.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=3
zuul.ratelimit.default-policy.refresh-interval=60
##针对 IP 进行限流,不影响其他 IP
zuul.ratelimit.default-policy.type=origin
分别启动product和order两个服务,然后启动网关服务,访问测试如下
product服务:
一分钟访问的第四次
order服务:正常访问
一分钟内访问的第四次
全局限流配置对每个服务都有效果
3.2 局部限流
针对特定的服务指定的限流策略
# 局部限流:针对某个服务进行限流
##开启限流
zuul.ratelimit.enabled=true
##60s 内请求超过 3 次,服务端就抛出异常,60s 后可以恢复正常请求
zuul.ratelimit.policies.e-book-product.limit=3
zuul.ratelimit.policies.e-book-product.refresh-interval=60
##针对某个 IP 进行限流,不影响其他 IP
zuul.ratelimit.policies.e-book-product.type=origin
以上配置只针对e-book-product的服务一分钟内最多访问3次,超过就会限流,对其他服务就没有影响。效果可自行演示。
4.网关限流参数
5.异常处理
增对error异常,我们可以提供一个全局异常处理器
@RestController
public class ExceptionHandler implements ErrorController{
@Override
public String getErrorPath() {
return "error";
}
@RequestMapping(value="/error")
public String error(){
return "{\"result\":\"访问太多频繁,请稍后再访问!!!\"}";
}
}
限流的提示如下:
本文名称:SpringCloud-Zuul高并发请求下的限流处理
文章URL:http://scyanting.com/article/ghjois.html