代码拉取完成,页面将自动刷新
使用令牌桶机制限流的小工具,使用注解方式方便使用。 braum帮你实现注解方式,更加简单快捷。
jdk 1.8+ maven 3.5+
拉取代码,打包
springboot:单机只需三步即可使用,
/**
* 使用 @EnableEasyRateLimiter 注解,才可以使用rateLimiter 注解类工具
*/
@SpringBootApplication()
@EnableEasyRateLimiter
public class Application extends SpringBootServletInitializer {
......
}
//本地单机限流
@EasyRateLimier(value = "test", permitsPerSecond = 0.1, limiterType = LimiterType.LOCAL, limiterHandleType = LimiterHandleType.WAIT, timeout = 2000L)
public String global() {
return "111";
}
//分布式限流
@EasyRateLimier(value = "test", permitsPerSecond = 0.1, limiterType = LimiterType.DIST, limiterHandleType = LimiterHandleType.WAIT, timeout = 2000L)
public String global() {
return "111";
}
//注解支持多个限流规则
@EasyRateLimier(value = "localException", permitsPerSecond = 0.1,blockMessage = "限流了",limiterType = LimiterType.LOCAL, limiterHandleType = LimiterHandleType.EXCEPTION)
@EasyRateLimier(value = "localEx111ception", permitsPerSecond = 11,blockMessage = "又限流了",limiterType = LimiterType.LOCAL, limiterHandleType = LimiterHandleType.EXCEPTION)
public String localException(User user) {
return "111";
}
//更多示例参考 braum-example
application.properties 文件
easy.limiter.dist.redis.host=127.0.0.1
easy.limiter.dist.redis.port=6379
easy.limiter.dist.redis.password=xxx
/**
* 资源命名,唯一标识
*/
String value() default "";
/**
* 限流表达式 可为空
* 如不为空,则完整限流名:资源命名+限流标识
*
* @return keys
*/
String[] keys() default {};
/**
* 限流key定义类型
*
* @return 定义类型
*/
LimiterKeyType keyType() default LimiterKeyType.PARAM;
/**
* 每秒内允许通过的数量
*/
double permitsPerSecond() default 0.0d;
/**
* 限流类型 本地、分布式
* 默认本地
*/
LimiterType limiterType() default LimiterType.LOCAL;
/**
* 限流处理类型 默认 抛出异常
* RateLimitBlockException
*/
LimiterHandleType limiterHandleType() default LimiterHandleType.EXCEPTION;
/**
* 如果限流处理类型为 WAIT ,则默认有效
* 超时 默认抛出异常:RateLimitTimeoutBlockException
* 单位:毫秒
*/
long timeout() default 10L;
<dependency>
<groupId>cn.mianshiyi</groupId>
<artifactId>braum-datasource-nacos</artifactId>
<version>1.0.0</version>
</dependency>
2.初始化
//建议在项目启动时初始化
new NacosDataSource("BRAUM", "cn.mianshiyi.braum.nacos.datasource", "localhost:8848");
3.配置
[
{
"name":"test1",
"permitsPerSecond":10
},
{
"name":"test2",
"permitsPerSecond":0.5
}
]
<dependency>
<groupId>cn.mianshiyi</groupId>
<artifactId>braum-datasource-apollo</artifactId>
<version>1.0.0</version>
</dependency>
2.初始化
//建议在项目启动时初始化
new ApolloDataSource("braum-test", "application", "braum.limit.rule", "http://localhost:8080");
3.配置
[
{
"name":"test1",
"permitsPerSecond":10
},
{
"name":"test2",
"permitsPerSecond":0.5
}
]
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型