最近在研究spring-cloud的zuul的限流!
最简单的限流就是直接在配置文件里配置即可,在这里略....
这里讨论的是 extends ZuulFilter所能实现的限流。
从不同的维度,我们可以考虑不同的限流方案:
维度一、request:
//获取request
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
我们可以拿到request,从request中可得到请求的uri、客户的ip、登陆的用户的id等;
我们可以为每个uri设置一个规则,或者为所有uri设置统一的规则;
同理可以为特定的ip设置规则,也可以为一组ip(如一个ip段)设置规则,也可以为所有的ip设置规则;......
维度二、从统计的粒度,假设有一个规则是要统计一个ip段,则根据粒度可以是限定该ip段的集合作为一个整体进行统计,也可以是该ip段中的每一个ip作为一个统计对象进行统计!
维度三、从请求对应的响应的角度,如:全部的响应、全部的异常响应(ResponseStatusCode取值不为200)、连续的异常响应
特别说明一点,异常响应的页面Whitelabel Error Page,想统计这个页面使用的filter应该是post!