在线上生产环境中,javaweb程序有时候访问量大,会导致系统宕机的生产事故,针对这种现象,我们要使用技术手段来限制单位时间内某一个业务接口的并发访问量,进而使系统平稳运行,一下方式仅适用于单节点部署的应用场景。
一、RateLimiter类
RateLimiter翻译过来是速率限制器,使用的是一种叫令牌桶的算法,当线程拿到桶中的令牌时,才可以执行。通过设置每秒生成的令牌数来控制速率。使用例子如下:
二、Semaphore类
Semaphore翻译过来是信号量,通过设置信号量总数,当线程拿到信号量,才可以执行,当实行完毕再释放信号量。从而控制接口的并发数量。使用例子如下: