码迷,mamicode.com
首页 > 其他好文 > 详细

使用google的guova开发高并发下的接口限流

时间:2019-03-18 13:53:06      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:type   gate   流量   turn   static   too   tps   als   重载   

使用google的guova开发高并发下的接口限流

使用google的guova进行限流

1、guova的限流方式,在定时产生定量的令牌,令牌的数量限制了流量

2、增加一个订单接口限流类OrderRateFilter,继承ZuulFilter,并重载方法;filterType、filterOrder、shouldFilter、run

????filterType中return PRE_TYPE;

????fileterOrder中应该优先级最高,设为-4

????shouldFilter中设置限流的方法(类似于鉴权)

???? RequestContext requestContext= RequestContext.getCurrentContext();

HttpServletRequest httpServletRequest=requestContext.getRequest();

//System.out.println(httpServletRequest.getRequestURI());///apigateway/order/api/v1/orderfeignhystrix/save

//System.out.println(httpServletRequest.getRequestURL());//http://192.168.136.128:9000/apigateway/order/api/v1/orderfeignhystrix/save

?

if ("/apigateway/order/api/v1/orderfeignhystrix/save".equalsIgnoreCase(httpServletRequest.getRequestURI()))

{

return true;

}

????run中设置 ,获取令牌

????guava中需要增加令牌设置

????//每秒1000个令牌

????private static final RateLimiter RATE_LIMITER=RateLimiter.create(1000);

????

????在run中增加RATELIMITER.tryActquire();

????????如果未取到这返回过多的访问

???????? ?

???????? ?

if (!RATE_LIMITER.tryAcquire())

{

RequestContext requestContext=RequestContext.getCurrentContext();

requestContext.setSendZuulResponse(false);

requestContext.setResponseStatusCode(HttpStatus.TOO_MANY_REQUESTS.value());

}

使用google的guova开发高并发下的接口限流

标签:type   gate   流量   turn   static   too   tps   als   重载   

原文地址:https://www.cnblogs.com/programer-xinmu78/p/10551551.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!