最近公司在招人,所以整理一些比较常见的,可能在项目中用到的常见问题,其中并发问题基本都会有涉及到,本文仅记录一些高并发情况下的限流和削峰的策略。
限流:
- 通过nginx限流,nginx本身有请求限制和流量限制模块,比如限制请求频率、单ip并发,ip白名单等;
- 在微服务场景下,通过Springcloud Gateway和Redis可以实现更复杂灵活的限流策略,通过配置网关过滤器可以限制每秒请求数,每秒最大请求数,还能根据请求参数或请求ip地址来达到限流作用。
削峰:
削峰从本质上来说就是更多地延缓用户请求,以及层层过滤用户的访问需求,遵从“最后落地到数据库的请求数要尽量少”的原则。
- 通过消息队列来缓存请求流量,比如使用RabbitMQ,RabbitMQ提供了一种服务质量保障功能,即在非自动确认消息的前提下,如果一定数目的消息未被确认,不进行消费新的消息;
- 划分好静态资源,静态资源使用CDN进行分发;
- 通过前端给出类似验证码的操作,增加用户操作时间,给后端服务争取响应时间;
- 在特定场景下可以通过限流进行削峰,过滤掉无用的请求。
未经允许不得转载:小茉莉 » 高访问量环境下如何进行限流和削峰?
我靠666
秀,被你找到了,还没有公布
最多嵌套多少层?