Sentinel
是一个分布式系统的流量控制组件,由阿里巴巴开源,主要用于实现限流、降级和系统保护等目的。它能够为微服务架构下的应用提供数据面和控制面的解决方案,帮助开发者更好地管理服务之间的依赖关系,确保在高并发或故障情况下,系统依然能够保持稳定的服务质量。
在 Sentinel 中,“链路”(Chain)通常指的是请求处理路径上的各个资源节点所形成的序列。当一个请求进入系统后,它可能会经过多个服务或者资源点,这些点按照请求的流向构成了一个链路。在 Sentinel 中,可以使用 @SentinelResource
注解来标记一个方法作为资源,这样就可以对这个资源进行流量控制了。
流量控制(Flow Control)是 Sentinel 的核心功能之一,它的目的是防止服务由于过载而崩溃或响应变慢。流量控制可以通过以下几种方式来实现:
-
直接限制:直接限制某个资源的 QPS 或 TPS(每秒查询率/事务数),当达到预设阈值时,超出的请求将被拒绝或重定向到错误处理逻辑。
-
热点参数限流:对于一些带有热点数据的参数(如用户 ID),可以针对这些参数值进行限流,即限制访问特定参数值的频率。
-
链路级别的限流:除了单个资源外,还可以对整个链路设置限流规则,即限制从入口到出口整个流程的最大吞吐量。
-
基于资源类型的限流:可以针对不同的资源类型(如 API、SQL 查询等)设定不同的限流策略。
在流量控制中,Chain
的概念可以帮助我们理解请求在整个系统中的流动路径,并据此设计更加合理的限流规则。例如,我们可以根据请求经过的不同服务节点来动态调整限流策略,从而更精细地控制系统的整体负载。此外,通过监控和分析链路上的各个节点,还能帮助快速定位问题源头,进行故障排查和优化系统性能。