限流
限流是保护高并发系统的三把利器之一(限流、缓存、降级);其目的是通过对并发访问或请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务或进行流量整形
限流的类型可大致分为:
- 限制总并发数 - 数据库连接池、线程池
- 限制瞬时并发数 - nginx 的 limitconn 模块、Java Semaphore 限制并发
- 限制时间窗口内的平均速率 - Guava 的 RateLimiter
- 其他 - 根据网络流量、CPU 占用率、内存占用率等作为标准来进行限流