高并发场景下常见的限流算法及方案介绍
💡
原文中文,约7000字,阅读约需17分钟。
📝
内容提要
高并发带来的问题可以通过CDN、消息队列、多级缓存、异地多活等措施优化,但最终还是受硬件物理特性限制,此时限流熔断就发挥作用了。JUC包、Guava的RateLimiter、Netflix的Hystrix熔断器、阿里的Sentinel限流熔断组件、Tair和Redis等都可以实现限流。
🎯
关键要点
- 高并发场景下,系统性能受硬件物理特性限制,需采取限流熔断措施。
- 常用限流算法包括计数器、滑动窗口、漏桶和令牌桶。
- 计数器算法简单,但在时间临界点可能导致突刺现象。
- 滑动窗口算法通过分割时间段来平滑请求流量。
- 漏桶算法通过固定流速处理请求,超出容量的请求将被丢弃。
- 令牌桶算法允许突发流量,适合秒杀等场景。
- Tomcat和Nginx提供了不同的限流配置方式。
- JUC包中的Semaphore和Guava的RateLimiter是常用的限流工具。
- Netflix的Hystrix和阿里的Sentinel是流行的熔断组件。
- 分布式限流方案需要中心系统统一管控流量配额,需考虑可靠性。
- Tair和Redis可以通过自增方法和Lua脚本实现限流功能。
➡️