限流的分类
1. 基于资源的限流
- IP 限流:根据用户的 IP 地址进行访问控制,防止单个 IP 过多请求。
- 接口限流:对单个 API 接口进行访问限制,防止某个接口过载。
- 用户限流:针对特定用户(如基于账号、Session、Token 等)进行限流。
- 设备限流:针对访问同一应用的设备(如通过设备 ID、硬件 ID 等)进行限流。
2. 基于时间的限流
- 固定窗口限流:在固定时间窗口内(如每小时、每天),限定请求次数。
- 滑动窗口限流:请求的时间窗口是动态变化的,窗口内请求次数超过限制即进行限制。
- 令牌桶限流:通过令牌生成的方式进行请求控制,令牌桶中有固定数量的令牌,用户请求时需要获取令牌。
- 漏斗限流:请求以漏斗的方式逐渐流入,按照速率限制进入系统。
3. 基于流量的限流
- 请求频率限流:控制单位时间内的请求频率(如每秒、每分钟、每小时)。
- 带宽限流:限制数据的传输带宽,防止过多流量占用带宽资源。
- 请求量限流:限制在单位时间内请求的总量,而不仅仅是频率。
4. 基于策略的限流
- 动态限流:根据系统当前的负载情况动态调整限流策略。
- 静态限流:在系统初始化时设定固定的限流阈值,无法根据当前情况进行调整。
- 优先级限流:根据请求的优先级进行限流,优先级较高的请求会优先处理。
5. 基于身份的限流
- 匿名用户限流:针对没有登录的用户进行限流,防止机器人和匿名用户的过度请求。
- 认证用户限流:针对已认证或注册的用户进行限流,确保不影响正常的用户使用体验。
6. 基于流量来源的限流
- 来源 IP 限流:限制来自特定 IP 地址范围的流量。
- 来源地理位置限流:根据用户地理位置对流量进行限制(例如,仅允许某些地区的访问)。