秒杀接口实现高并发限流方案
Java高并发实现限流算法
常见限流算法常用的限流算法有:令牌桶,漏桶。
令牌桶算法
在秒杀活动中,用户的请求速率是不固定的,这里我们假定为10r/s,令牌按照5个每秒的速率放入令牌桶,桶中最多存放20个令牌。仔细想想,是不是总有那么一部分请求被丢弃。
漏桶算法
漏桶算法的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量
市面上常用实现限流框架
Nginx+Lua、Guava、hystrix等
基于谷歌RateLimiter实现限流
Google的Guava工具包中就提供了一个限流工具类——RateLimiter,本文也是通过使用该工具类来实现限流功能。RateLimiter是基于“令牌通算法”来实现限流的。
项目整合方式
<dependency>
<groupId>com.google.guava