返回

用 Sentinel 来实现 SpringCloud 流控策略!

后端

Sentinel:Spring Cloud 中的流量守护神

简介

在分布式微服务架构中,流量控制至关重要,它能保护系统免受过载影响,维持稳定运行。Sentinel 是一款专为 Spring Cloud 设计的流量控制神器,它以其易用性、动态规则、丰富的规则类型和强大的监控功能而备受青睐。

Sentinel 的优势

  • 易于使用: Sentinel 提供了简便易用的 API,可轻松集成到 Spring Cloud 应用中。
  • 动态规则: 所有 Sentinel 规则均可动态查询和修改,让你能实时调整策略,适应需求变化。
  • 丰富的规则类型: Sentinel 提供了全面的规则类型,包括限流规则、熔断规则、降级规则等,满足不同场景需求。
  • 强大的监控功能: Sentinel 提供了实时流量数据监控功能,让你时刻掌握服务状况,及时发现并解决问题。

Sentinel 的使用

1. 依赖引入

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    <version>2.2.4.RELEASE</version>
</dependency>

2. 配置 Sentinel

application.yml 中配置 Sentinel:

spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080
      eager: true

3. 创建限流规则

@Bean
public SentinelRule mySentinelRule() {
    return new SentinelRule()
        .setResource("myResource")
        .setLimitApp("default")
        .setGrade(RuleConstant.FLOW_GRADE_QPS)
        .setCount(100);
}

4. 创建熔断规则

@Bean
public SentinelRule my熔断Rule() {
    return new SentinelRule()
        .setResource("myResource")
        .setLimitApp("default")
        .setGrade(RuleConstant.FLOW_GRADE_QPS)
        .setCount(100)
        .setStrategy(RuleConstant.STRATEGY_COLD_FUSE);
}

5. 启动应用

运行 Spring Boot 应用,Sentinel 将自动生效。

Sentinel 规则的动态修改

Sentinel 规则可动态查询和修改,使用 Sentinel API 即可实现。

1. 查询规则

List<FlowRule> rules = sentinelResourceDataManager.listRules(new FlowRuleListRequest());

2. 修改规则

FlowRule rule = new FlowRule();
rule.setResource("myResource");
rule.setLimitApp("default");
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
rule.setCount(200);
sentinelResourceDataManager.saveOrUpdateFlowRule(rule);

常见问题解答

1. 什么是 Sentinel 的限流规则?

限流规则限制了特定资源的流量,避免系统过载。

2. 熔断规则有什么作用?

熔断规则检测服务不可用,并快速切断流量,防止级联故障。

3. 降级规则如何运作?

降级规则在服务不可用时,将流量切换到降级方案,确保用户体验不受到严重影响。

4. Sentinel 如何实现监控功能?

Sentinel 提供了仪表盘和 API,让你实时监控流量数据和系统状态。

5. 如何在生产环境使用 Sentinel?

推荐在生产环境中使用 Sentinel 仪表盘和告警功能,以全面监控和管理流量。