高访问量环境下如何进行限流和削峰?

最近公司在招人,所以整理一些比较常见的,可能在项目中用到的常见问题,其中并发问题基本都会有涉及到,本文仅记录一些高并发情况下的限流和削峰的策略。

限流:

  • 通过nginx限流,nginx本身有请求限制和流量限制模块,比如限制请求频率、单ip并发,ip白名单等;
  • 在微服务场景下,通过Springcloud Gateway和Redis可以实现更复杂灵活的限流策略,通过配置网关过滤器可以限制每秒请求数,每秒最大请求数,还能根据请求参数或请求ip地址来达到限流作用。

削峰:

削峰从本质上来说就是更多地延缓用户请求,以及层层过滤用户的访问需求,遵从“最后落地到数据库的请求数要尽量少”的原则。

  • 通过消息队列来缓存请求流量,比如使用RabbitMQ,RabbitMQ提供了一种服务质量保障功能,即在非自动确认消息的前提下,如果一定数目的消息未被确认,不进行消费新的消息;
  • 划分好静态资源,静态资源使用CDN进行分发;
  • 通过前端给出类似验证码的操作,增加用户操作时间,给后端服务争取响应时间;
  • 在特定场景下可以通过限流进行削峰,过滤掉无用的请求。

未经允许不得转载:小茉莉 » 高访问量环境下如何进行限流和削峰?

赞 (1) 打赏

3 评论

2+4=

  1. 梦浪的小虾米

    我靠666

    回复
    • 冬天的秘密

      秀,被你找到了,还没有公布

      回复
      • SCP-1998

        最多嵌套多少层?

        回复

觉得文章有用就打赏一下小茉莉

支付宝扫一扫打赏

微信扫一扫打赏