【高并发】一分钟了解什么是限流

简介: 在开发高并发系统时,有很多手段可以保护系统,如:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统处理能力。降级是当服务出问题或影响到核心流程的性能,需要暂时屏蔽掉,待高峰过去或者问题解决后再打开。有些场景不适合用缓存或降级,比如稀缺资源(秒杀、抢购)、写服务(评论、下单)、频繁的复杂查询(评论的最后几页)等,这些场景可以用限流限制并发/请求量。

在开发高并发系统时,有很多手段可以保护系统,如:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统处理能力。降级是当服务出问题或影响到核心流程的性能,需要暂时屏蔽掉,待高峰过去或者问题解决后再打开。有些场景不适合用缓存或降级,比如稀缺资源(秒杀、抢购)、写服务(评论、下单)、频繁的复杂查询(评论的最后几页)等,这些场景可以用限流限制并发/请求量。


限流的目的是通过对并发访问/请求进行限速或者一个事件窗口内的请求进行限速来保护系统,一旦达到限制速率可以拒绝服务(定向到错误页或告知资源没有了)、排队或等待(比如秒杀、评论、下单)、降级(返回兜底数据或默认数据,如商品详情页库存默认有货)。


一般开发高并发系统常见的限流有:限制总并发数(比如数据库连接池、线程池)、限制瞬时并发数(如Nginx的limit_conn模块,用来限制瞬时并发连接数)、限制时间窗口内的平均速率(如Guava的RateLimiter、Nginx的limit_req模块,用来限制每秒的平均速率),以及限制远程接口调用速率、限制MQ消费速率等。还可以根据网络连接数、网络流量、CPU或内存负载等来限流。

相关文章
|
1月前
|
应用服务中间件 Linux nginx
高并发下Nginx配置限流
【8月更文挑战第16天】
47 1
|
2月前
|
存储 缓存 分布式计算
高并发架构设计三大利器:缓存、限流和降级问题之缓存的应对策略问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之缓存的应对策略问题如何解决
|
2月前
|
存储 缓存 边缘计算
高并发架构设计三大利器:缓存、限流和降级问题之控制浏览器缓存的行为问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之控制浏览器缓存的行为问题如何解决
|
2月前
|
存储 缓存 NoSQL
高并发架构设计三大利器:缓存、限流和降级问题之Redis用于搭建分布式缓存集群问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之Redis用于搭建分布式缓存集群问题如何解决
|
2月前
|
开发者 Sentinel 微服务
高并发架构设计三大利器:缓存、限流和降级问题之降级策略中的有限状态机的三种状态切换的问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之降级策略中的有限状态机的三种状态切换的问题如何解决
|
2月前
|
监控 应用服务中间件 nginx
高并发架构设计三大利器:缓存、限流和降级问题之Nginx的并发连接数计数的问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之Nginx的并发连接数计数的问题如何解决
|
2月前
|
应用服务中间件 nginx 缓存
高并发架构设计三大利器:缓存、限流和降级问题之Nginx作为前置网关进行限流问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之Nginx作为前置网关进行限流问题如何解决
|
2月前
|
监控 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
|
2月前
|
监控 Sentinel 缓存
高并发架构设计三大利器:缓存、限流和降级问题之RateLimiter的acquire()方法有什么作用
高并发架构设计三大利器:缓存、限流和降级问题之RateLimiter的acquire()方法有什么作用
|
2月前
|
存储 算法 缓存
高并发架构设计三大利器:缓存、限流和降级问题之使用RateLimiter来限制操作的频率问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之使用RateLimiter来限制操作的频率问题如何解决

热门文章

最新文章