限流一般可以根据客户端IP,请求的URL,用户登陆信息进行限制,每秒钟限制多次数,这从别一方面也提升了系统的性能,无用的并发没那么多了。

依赖包

org.springframework.cloudspring-cloud-starter-zuulcom.marcosbarbero.cloudspring-cloud-zuul-ratelimit1.3.2.RELEASE

zuul的配置

zuul:routes: #实现了反向代码和负载均衡,负载均衡采用轮询的方式实现a:path: /a/**sensitiveHeaders: "*" #不过滤任何头信息serviceId: serviceab:path: /b/**sensitiveHeaders: "*"serviceId: servicebc:path: /c/**sensitiveHeaders: "*"serviceId: servicecadd-proxy-headers: falsestripPrefix: true #为true的情况下:向后端转发之后是不会携带 '/a' 的。为 false 则相反

ratelimit限制配置

ratelimit:enabled: truerepository: REDIS #使用redis存储,一定要大写!policies:a: #针对上面那个服务的限流limit: 100 #每秒多少个请求refreshInterval: 60 #刷新时间窗口的时间,默认值 (秒)type:- ORIGIN #这里一定要大写,类型说明:URL通过请求路径区分,ORIGIN通过客户端IP地址区分,USER是通过登录用户名进行区分,也包括匿名用户

这样,服务a的限流就做好了!

最近整理了一系列的Java面试题,包含了Java基础、进阶、多线程、并发编程、数据库(MySQL、Redis、MongoDB、Memcachedd等等)、Spring全家桶、MyBatis、ZooKeeper、Dubbo、Elasticsearch、RabbitMQ、Kafka、Linux、Netty、Tomcat以及阿里、腾讯、字节、百度等大厂的面试真题,另外可以微信搜索539413949获取我为大家准备的资料