高并发系统限流方案:Sentinel 实战
在微服务架构中,流量控制是保证系统稳定性的关键技术。Sentinel 是阿里巴巴开源的流量控制框架,提供了丰富的限流功能。
Sentinel 核心功能
流量控制
- 基于 QPS 的直接限流
- 基于并发数的限流
- 基于匀速排队的限流
熔断降级
- 慢调用比例熔断
- 异常比例熔断
- 异常数量熔断
实战示例
// 定义资源
String resourceName = "getUser";
// 配置规则
List rules = new ArrayList<>();
FlowRule rule = new FlowRule();
rule.setResource(resourceName);
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
rule.setCount(100); // 每秒最多100个请求
rule.setStrategy(RuleConstant.STRATEGY_DIRECT);
rule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_DEFAULT);
rules.add(rule);
FlowRuleManager.loadRules(rules);
// 使用资源
try (Entry entry = SphU.entry(resourceName)) {
// 业务逻辑
} catch (BlockException e) {
// 被限流的处理逻辑
}
集成 Spring Cloud Alibaba
Sentinel 可以无缝集成到 Spring Cloud 项目中,提供开箱即用的流量控制能力。