Guava提供的比率可以限制物理或逻辑资源的访问率。它有点像Java数据包下的Samephore,但比率控制速率,Samephore控制了并发量。
比率的原理与令牌桶相似。它主要由许可证签发的利率定义。如果没有其他配置,则将以每秒指定的固定速度分配许可证。RateLimiter释放许可证以每秒1/允许的速度释放许可证。
可以看出,我假设每秒请求的请求率是1。总共需要9次获得10个任务,因此,最终消耗10个任务约为9次。因此如何在实际项目中使用它?
在实际项目中使用
Jmeter从10个螺纹访问接口开始,测试结果如下:
可以发现,总是只能获得6个复杂的访问。结论是获得比率的n+1许可证。创建(n)。一般来说,番石榴的比例比例相对优雅。这篇文章简单地提到了比塔仪的使用。
翻转并发现上述方法的使用不足以使用比例仪,尽管我们可以包装服务中的比率逻辑逻辑,但控制器可以直接调用它,但是如果我们更改它:自定义方法的方法注释+表面已实现,它将更加优雅,更优雅。详细查看以下代码:
定制注释类
定制切割
推荐一个春季启动基本教程和实际战斗示例:https://www.javastack.cn/categories/spring-boot/
测试控制器类
通过这种方式,通过自定义注释@RateLimiterAspect,它可以动态添加到需要限制的接口中。就个人而言,我认为它更优雅。
压缩结果:
可以看出,无论10个线程中有多少次,并发次数始终限制为6,并且实现了当前限制。
作者:一碗米饭