Sentinel
是一个开源的系统保护和流量控制组件,主要设计用于保护微服务架构中的服务。它提供了丰富的流量控制和熔断机制,帮助开发者在面对突发流量时保护服务节点和下游依赖节点的稳定性。Sentinel 提供了多种流量控制规则,以下是一些主要的流量控制规则及其作用:
-
QPS限流(每秒查询率)
- 作用:限制一个资源的QPS(每秒查询数量),当请求速率超过设定值时,超出的请求会被限流。
- 场景:适用于需要对API接口进行访问频率控制的情况。
-
流速限流
- 作用:与QPS类似,但可以设置不同时间段内的平均流量阈值。
- 场景:适用于需要平滑流量的情况,例如在一个分钟内平均流量不超过某个值。
-
并发线程数限流
- 作用:限制一个资源的并发线程数,当并发线程数达到设定值后,新的请求将被限流。
- 场景:适用于需要控制服务并发量,防止服务器过载的情况。
-
热点参数限流
- 作用:针对带有热点参数的方法进行限流,即限制一些参数值出现频次较高的方法调用。
- 场景:适用于某些参数可能成为热点的情况,如商品ID、用户ID等。
-
链路维度限流
- 作用:对整个链路进行限流,而不是单个资源或接口。
- 场景:适用于需要从整体上控制应用的入口流量的情况。
-
异常比例/异常数量限流
- 作用:根据一定时间窗口内的异常比例或异常数量来进行限流。
- 场景:适用于当服务出现异常时,自动减少该服务的流量以减轻压力。
-
系统限流
- 作用:基于整个系统的负载情况进行限流,例如根据机器的负载、CPU使用率等指标来限制流量。
- 场景:适用于全局性地保护系统不被流量冲垮的情况。
通过这些规则,Sentinel可以帮助开发者更灵活地控制服务的流量,并且可以根据实际场景组合使用不同的规则来实现更加复杂的流量控制策略。