sentinel限流并发线程数限流 与 直接QPS限流 区别

发线程数限流和直接 QPS 限流是 Sentinel 中两种不同的限流策略,它们分别从不同的角度来控制系统的流量和负载。下面详细解释这两种限流的区别:

并发线程数限流 (Concurrency Level Threshold)

  • 定义:

    • 并发线程数限流关注的是某一时刻正在执行的请求的数量。
    • 当一个请求开始执行并占用一个线程(或线程池中的线程),直到该请求完成,这段时间内该请求都计入并发数。
  • 适用场景:

    • 适用于那些处理时间较长、可能阻塞的操作,例如数据库查询、外部服务调用等。
    • 对于一些资源消耗较大的操作,通过限制并发数可以有效防止资源耗尽。
  • 特点:

    • 当并发数达到设定的阈值时,新的请求将被限流,直到有请求完成释放了并发数。
    • 更加关注系统的负载和资源使用情况。

直接 QPS 限流 (QPS Threshold)

  • 定义:

    • 直接 QPS 限流关注的是单位时间内到达的请求数量。
    • 通常是以秒为单位来计算每秒可以处理的请求数量。
  • 适用场景:

    • 适用于需要均匀分布请求负载的场景,如 Web 服务接口。
    • 对于短时高并发的情况,QPS 限流可以帮助平滑请求。
  • 特点:

    • 当每秒的请求数量超过设定的阈值时,超出的请求将被限流。
    • 更加关注请求频率,适用于快速响应的服务。

总结

  • 并发线程数限流关注的是系统处理能力的上限,即同一时刻能处理多少个请求,这有助于防止服务因为过多的并发而崩溃。
  • 直接 QPS 限流关注的是单位时间内的请求频率,这有助于防止瞬时高峰导致的负载突增。

示例

假设我们有一个服务,该服务每次请求都需要访问数据库,并且数据库连接有限,此时采用 并发线程数限流 更为合适,因为它能够控制同时访问数据库的请求数量,避免数据库连接耗尽。

另一方面,如果我们有一个 API 接口,它需要对外提供稳定的服务,并且希望避免突发的大流量冲击,那么 直接 QPS 限流 就是一个更好的选择,因为它可以保证在任何时间点上的请求不会超过一定的速率。

posted @ 2024-08-08 09:36  使用D  阅读(162)  评论(0编辑  收藏  举报