高并发下限流
高并发限流
高并发处理指标
- 响应时间(RT):处理一个HTTP请求需要的耗时,以毫秒为单位
- 吞吐量:单位时间处理的请求数 QPS 、TPS
- 并发用户数:在线用户
高可用
3个9,4个9,5个9
SLA:服务等级协议
高并发下如何保证高可用
- 集群化
- 服务拆分:微服务
- 失败重试:网络抖动,丢包(定时任务补偿,幂等性)
- 灰度发布:版本号,不同的用户不同的版本,减少新版本影响的范围
- 快速回滚
- 系统监控:300节点,普罗米修斯监控平台
- 异步调用:消息队列,削峰填谷
- 限流降级
常见的限流解决方案
-
前端限流:验证码、回答问题、小游戏
-
后端限流:LVS、防火墙、流量的过滤、IP
-
代理层:Nginx(Lua脚本令牌桶)、Haproxy、Gateway
-
Tomcat:Server.xml(maxConnect、maxThreads)
-
服务层:Springmvc、Spring boot-------method
-
JUC:并发编程,单点限流
-
限流中间件:SpringClouds:Hystrix(线程数限流,QPS限流)
Sentinel:阿里的,线程数限流、QPS限流、集群限流
-
限流策略
-
计数器:限制时间范围内次数
-
漏桶算法
-
令牌桶算法

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

浙公网安备 33010602011771号