Merge branch 'master' of https://github.com/dushitaoyuan/javaweb_security_handle
This commit is contained in:
@@ -61,18 +61,14 @@ public class RateLimitAspect {
|
||||
RateLimitType type = rateLimit.type();
|
||||
String key = rateLimit.key();
|
||||
if (type == null) {
|
||||
key = methodName;
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("{}限流策略未定义,采用[{}]限流策略", methodName, RateLimitType.METHOD);
|
||||
type = RateLimitType.METHOD;
|
||||
}
|
||||
} else {
|
||||
switch (type) {
|
||||
case IP:
|
||||
String serviceKey = rateLimit.key();
|
||||
if (serviceKey == null || key.isEmpty()) {
|
||||
if (key == null || key.isEmpty()) {
|
||||
key = RequestUtil.getRemoteIp() + "_" + methodName;
|
||||
} else {
|
||||
key = RequestUtil.getRemoteIp() + "_" + serviceKey;
|
||||
key = RequestUtil.getRemoteIp() + "_" + key;
|
||||
}
|
||||
break;
|
||||
case METHOD:
|
||||
@@ -84,7 +80,6 @@ public class RateLimitAspect {
|
||||
key = "global";
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("采用[{}]限流策略,限流key:{}", type, key);
|
||||
}
|
||||
|
||||
@@ -31,12 +31,10 @@ public class GuavaRateLimiter extends AbstractRateLimiter {
|
||||
rateHolder.clear();
|
||||
}
|
||||
RateLimiter rateLimiter = null;
|
||||
if (rateHolder.containsKey(key)) {
|
||||
rateLimiter = rateHolder.get(key);
|
||||
} else {
|
||||
rateLimiter = RateLimiter.create(limit);
|
||||
if (!rateHolder.containsKey(key)) {
|
||||
rateHolder.putIfAbsent(key, RateLimiter.create(limit));
|
||||
}
|
||||
rateHolder.putIfAbsent(key, rateLimiter);
|
||||
rateLimiter = rateHolder.get(key);
|
||||
return rateLimiter.tryAcquire(permits);
|
||||
}
|
||||
|
||||
@@ -54,9 +52,11 @@ public class GuavaRateLimiter extends AbstractRateLimiter {
|
||||
countHolder.clear();
|
||||
}
|
||||
LongAdder longAdder = null;
|
||||
if (countHolder.containsKey(key)) {
|
||||
if (!countHolder.containsKey(key)) {
|
||||
countHolder.putIfAbsent(key, new LongAdder());
|
||||
}
|
||||
longAdder = countHolder.get(key);
|
||||
if (longAdder.longValue() >=totalCount) {
|
||||
if (longAdder.longValue() >= totalCount) {
|
||||
TOTAL_LIMIT_ZERO_FLAG.put(key);
|
||||
countHolder.remove(key);
|
||||
return false;
|
||||
@@ -65,11 +65,5 @@ public class GuavaRateLimiter extends AbstractRateLimiter {
|
||||
return true;
|
||||
}
|
||||
|
||||
longAdder = new LongAdder();
|
||||
countHolder.putIfAbsent(key, longAdder);
|
||||
countHolder.get(key).add(count);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user