高并发下限流

高并发限流

高并发处理指标

  • 响应时间(RT):处理一个HTTP请求需要的耗时,以毫秒为单位
  • 吞吐量:单位时间处理的请求数 QPS 、TPS
  • 并发用户数:在线用户

高可用

3个9,4个9,5个9

SLA:服务等级协议

高并发下如何保证高可用

  • 集群化
  • 服务拆分:微服务
  • 失败重试:网络抖动,丢包(定时任务补偿,幂等性)
  • 灰度发布:版本号,不同的用户不同的版本,减少新版本影响的范围
  • 快速回滚
  • 系统监控:300节点,普罗米修斯监控平台
  • 异步调用:消息队列,削峰填谷
  • 限流降级

常见的限流解决方案

  1. 前端限流:验证码、回答问题、小游戏

  2. 后端限流:LVS、防火墙、流量的过滤、IP

    1. 代理层:Nginx(Lua脚本令牌桶)、Haproxy、Gateway

    2. Tomcat:Server.xml(maxConnect、maxThreads)

    3. 服务层:Springmvc、Spring boot-------method

    4. JUC:并发编程,单点限流

    5. 限流中间件:SpringClouds:Hystrix(线程数限流,QPS限流)

      ​ Sentinel:阿里的,线程数限流、QPS限流、集群限流

限流策略

  1. 计数器:限制时间范围内次数

  2. 漏桶算法

  3. 令牌桶算法

    image-20211109092218319

    Goole的Guava框架的RateLimiter
    1 令牌累积最大的桶数量
    2 没有足够的令牌发放的时候,采用滞后处理的方式,也就是前一个请求获取令牌所需要的等待时间由下一次请求来承受,也就是代替前一个请求等待,即:支持突发大流量,但是会在下次请求进行补偿。
    
  4. 分布式限流:redis+lua

  5. 微服务限流:sentinel

实现微服务限流

posted @ 2021-11-09 10:37  地球小星星  阅读(120)  评论(0)    收藏  举报