Sentinel 是一个开源的流量控制组件,由阿里巴巴开源。它主要用于微服务的稳定性和可靠性保障,提供了丰富的功能来应对各种服务和应用的高可用需求。Sentinel 特别适合用来处理微服务架构中的流量控制、熔断降级、系统自适应保护等问题。
核心功能
- 流量控制:
- Sentinel 可以通过定义流量控制规则来限制访问频率,保护系统不被高流量压垮。这些规则可以基于QPS(每秒查询率)或并发线程数设置。
- 熔断降级:
- 在服务不稳定(如响应时间过长或异常率过高)时会自动进行熔断,快速返回错误响应或者调用回退逻辑,防止服务雪崩效应。
- 系统自适应保护:
- 根据系统的负载情况(如CPU使用率、总体平均响应时间等)自动调整流量控制规则,确保系统在安全的负载下运行。
- 热点参数限流:
- 支持对经常访问的“热点”数据进行流量控制,比如对热门商品的请求过于频繁时自动进行限流。
- 实时监控和动态规则配置:
- Sentinel 提供了实时监控功能,可以实时观察系统的运行状态和规则的执行效果(流量、熔断、响应时间等信息)。同时,支持通过控制台动态修改流量控制规则,无需重启应用。
- 规则的优先级:
- Sentinel 支持多种规则,如流量控制规则、降级规则、系统保护规则等。这些规则有不同的优先级,当多个规则同时触发时,高优先级的规则会先被执行。
使用场景
- 微服务流量控制:在微服务架构中,可以使用Sentinel对服务间的调用进行流量控制。
- API网关流量控制:在API网关中,可以使用Sentinel对外部的请求进行流量控制。
- 分布式系统熔断降级:在分布式系统中,可以使用Sentinel对故障的服务进行熔断降级。
- 系统负载保护:当系统的负载过高时,可以使用Sentinel进行流量控制,保护系统。
作用
- 流量控制:保护系统免受恶意攻击和流量峰值。
- 熔断控制:在服务出现问题时,自动进行熔断降级,保护系统。
- 系统负载保护:在系统负载过高时,自动进行流量控制,保护系统。
- 实时监控:提供实时的监控和统计功能,帮助运维人员了解系统的状态。
底层原理
- Sentinel 使用
滑动窗口算法
来统计请求的数量和响应时间。这使得 Sentinel 可以实时地获取系统的运行状态,并根据这些状态做出限流、降级和熔断的决策。 - Sentinel 的核心是一系列的处理器和规则。处理器负载统计数据和执行控制逻辑,而规则定义了何时触发控制逻辑。