基于令牌桶算法实现的分布式无锁限流框架,支持动态配置规则,支持可视化监控,开箱即用。
限流 | 降级 | 授权 | 注解 | 监控 |
---|---|---|---|---|
黑名单 | 白名单 | 控制台 | 分布式 | 高可用 |
单例模式 | 观察者模式 | 工厂模式 | 建造者模式 | MVC模式 |
---|---|---|---|---|
全局配置 | 动态规则 | 生产限流器 | 限流规则 | 控制台 |
<dependency>
<groupId>com.github.onblog</groupId>
<artifactId>snowjena-core</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
public class AppTest {
Logger logger = LoggerFactory.getLogger(getClass());
/**
* 本地限流
*/
@Test
public void test1() {
// 1.配置规则
RateLimiterRule rateLimiterRule = new RateLimiterRuleBuilder()
.setLimit(1)
.setPeriod(1)
.setUnit(TimeUnit.SECONDS) //每秒令牌数为1
.build();
// 2.工厂模式生产限流器
RateLimiter limiter = RateLimiterFactory.of(rateLimiterRule);
// 3.使用
while (true) {
if (limiter.tryAcquire()) {
logger.info("ok");
}
}
}
}