一、大促期间的稳定性挑战
反向海淘系统在大促期间面临三重复合压力:外部依赖(1688 API、淘宝API)响应变慢甚至超时、下游服务(仓储、物流)因订单暴增处理能力下降、自身服务在高并发下线程池被占满。任何一个环节的故障都可能引发级联效应,导致整个系统不可用。
Taocarts系统在2025年黑五大促中,1688 API因请求量过大出现间歇性超时,超时率一度达到15%。由于没有熔断保护,超时请求持续占用Tomcat线程池,导致正常请求也被阻塞,最终引发了部分服务不可用的雪崩。
二、Sentinel熔断降级方案
我们引入阿里云Sentinel作为服务治理框架,从流量控制、熔断降级、系统负载保护三个维度构建防护体系。
- 流量控制(限流)
java
@Component
public class SentinelConfig {
@PostConstruct
public void initFlowRules() {
// 订单创建接口限流:单机QPS上限500
FlowRule orderFlowRule = new FlowRule();
orderFlowRule.setResource("order:create");
orderFlowRule.setGrade(RuleConstant.FLOW_GRADE_QPS);
orderFlowRule.setCount(500);
orderFlowRule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_WARM_UP);
orderFlowRule.setWarmUpPeriodSec(10);
// 1688采购接口限流:防止触发1688反爬
FlowRule purchaseFlowRule = new FlowRule();
purchaseFlowRule.setResource("purchase:1688");
purchaseFlowRule.setGrade(RuleConstant.FLOW_GRADE_QPS);
purchaseFlowRule.setCount(50);
FlowRuleManager.loadRules(Arrays.asList(orderFlowRule, purchaseFlowRule));
}
}
- 熔断降级
java
@Service
@Slf4j
public class PurchaseService {
@SentinelResource(
value = "purchase:1688",
fallback = "purchaseFallback",
blockHandler = "purchaseBlockHandler"
)
public PurchaseResult purchaseFrom1688(Long orderId, Long productId, Integer quantity) {
// 调用1688 API
return alibabaApiClient.createOrder(productId, quantity);
}
// 熔断降级方法:当1688 API超时或异常率过高时触发
public PurchaseResult purchaseFallback(Long orderId, Long productId, Integer quantity, Throwable ex) {
log.warn("1688采购降级,订单号:{},原因:{}", orderId, ex.getMessage());
// 降级方案:存入待处理队列,人工后续处理
pendingPurchaseService.save(orderId, productId, quantity);
return PurchaseResult.pending("采购排队中,稍后处理");
}
// 限流降级方法:QPS超限时触发
public PurchaseResult purchaseBlockHandler(Long orderId, Long productId, Integer quantity, BlockException ex) {
log.warn("1688采购限流,订单号:{}", orderId);
return PurchaseResult.pending("系统繁忙,请稍后重试");
}
}
- 系统级保护
java
@Configuration
public class SystemGuardConfig {
@PostConstruct
public void initSystemRules() {
// CPU使用率超过80%时触发系统保护
SystemRule systemRule = new SystemRule();
systemRule.setHighestCpuUsage(0.8);
systemRule.setHighestSystemLoad(3.0);
systemRule.setAvgRt(1000);
SystemRuleManager.loadRules(Collections.singletonList(systemRule));
}
}
三、熔断降级效果
黑五大促期间,Sentinel防护体系在Taocarts系统的表现:
1688 API超时率:从15%降至2%,熔断机制将超时请求快速失败
订单接口P99延迟:从850ms降至220ms,限流保护了线程池不被耗尽
系统可用性:大促全程保持99.95%以上,无雪崩事件
Sentinel服务治理方案已在Taocarts跨境电商独立站系统全面落地,成为保障大促稳定性的核心基础设施。