最近疫情待在家里,好久没更新文章了。今天给大家讲讲高并发系统里面的限流。
一谈到高并发,大家就会想到微服务、缓存、降级和限流。但是在很多的高并发业务系统里面,由于业务本身的特性,是不适合用缓存和降级的,例如秒杀、抢购的场景,就不是完全适合使用缓存和降级这种措施来保障高并发系统的稳定性的,因此限流就是最好的一种选择。
那么什么是限流呢?
限流就是通过对并发访问或者请求进行限速,或者是一个事件窗口内的请求进行限速,一旦达到限制的速率则直接拒绝服务的访问,定向到错误页面或者自定义的其他页面,或者进行排队等待的情况,这样子就是限流。
在高并发的系统里面,我们常见的限流措施有:
1、限制总并发数(例如我们的数据库连接池设置大小,线程池设置大小) 2、限制瞬时并发数(例如使用nginx的limit——conn模块进行瞬时并发连接数的限制) 3、限制时间窗口内的平均速率(例如使用Guava的RateLimiter或者nginx的limit_req模块,限制每秒的平均速率) 4、限制远程接口的调用速率 5、限制MQ消费速率
补充一下:
在高并发的系统里面,我们有限流,那么一般我们的系统都是完整的大型系统,那么在服务的动态伸缩方面也应该要做好相关的措施。
还没有评论,来说两句吧...