题目1:高并发场景下如何设计服务降级与限流策略?
场景描述
某电商平台的秒杀系统在活动期间每秒请求量达到10万+,需保证核心业务(如下单、库存扣减)的稳定性。请设计一个基于Spring Cloud的降级与限流方案,确保系统在极端情况下不崩溃,并说明实现原理。
解答
核心思路
- 限流策略:基于令牌桶或漏桶算法控制请求速率,避免瞬时流量冲击。
- 服务降级:使用Hystrix实现熔断和降级,结合线程池隔离防止雪崩。
- 动态配置:通过Spring Cloud Config动态调整限流阈值和熔断策略。
实现步骤
-
限流实现:
- 使用
Guava
的RateLimiter
或Spring Cloud Gateway
的Redis RateLimiter
实现分布式限流。 - 示例代码(Spring Cloud Gateway + Redis):
// 配置Gateway限流路由 @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() .route("seckill_route", r -> r.path("/seckill/**") .filters(f -> f.requestRateLimiter(config -> config.setKeyResolver(new HeaderKeyResolver("X-Request-Id")) .setRateLimiter(new RedisRateLimiter()))) .uri("lb://seckill-service")) .build(); }
- 使用
-
熔断与降级:
- 在服务调用层使用Hystrix命令包装,配置线程池隔离和熔断阈值。