limiter
Limiter 是一个面向具体业务的,轻量级限流器。
Limiter提供的核心能力包括:
Hitter
(命中器)和Limiter
(限流器)抽象资源命中过程和限流过程Note: Limiter需要JDK8以上版本, Spring boot 2.0.
添加maven依赖,其他构建环境参照maven配置
<dependency>
<groupId>me.fmeng</groupId>
<artifactId>limiter</artifactId>
<version>x.y.z</version>
</dependency>
application.yaml
配置
limiter:
appId: "appId"
enable: true
allLimiterTimeoutMilliseconds: 60000
items:
- name: "guavaLimiter"
permits: 1
limiterStrategyType: ANNOTATION
// 名字和配置文件中保持一致
@Limiter("guavaLimiter")
public void limiteMethod() {
System.out.println("你可以访问");
}
// 使用单元测试验证限流效果
TicketServiceTest.guavaAnnotationServiceGuava10pTest
resource:
requestMethods: [GET, POST]
pathRegex: ".*/test/url/.*"
params:
- paramName: "userId"
paramValues: ["user111", "user222"]
resource:
requestMethods: [GET, POST]
pathRegex: ".*/test/url/.*"
params:
- paramName: "userId"
paramValues: ["user111", "user222"]
- paramName: "requestIp"
paramValues: ["127.0.0.1"]
resource:
requestMethods: [GET]
pathRegex: ".*/test/url/.*"
reverse: true
params:
- paramName: "userId"
paramValues: ["user111", "user222"]
resource:
requestMethods: [GET]
pathRegex: ".*/test/url/.*"
params:
- paramName: "userId"
dynamic: true
# 访问频率设置为0
permits: 0
# 配置被限制的资源
resource:
...
me.fmeng.limiter.CustomLimiterFactory
me.fmeng.limiter.CustomLimiterInterceptor
me.fmeng.limiter.CustomLimiterTranslator