
1) 【一句话结论】处理高并发需通过限流(控制请求速率防雪崩)、熔断(故障隔离防级联)、异步调用(解耦提升吞吐)等手段,结合Spring Cloud组件实现,核心是分层防御保障系统稳定性。
2) 【原理/概念讲解】老师口吻:
3) 【对比与适用场景】
| 技术手段 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 限流 | 控制请求进入系统的速率,防止服务器过载 | 令牌桶/漏桶算法,可配置QPS(每秒请求数) | 保护后端服务,应对突发流量 | 配置不当可能导致合法请求被拒绝 |
| 熔断 | 当服务调用失败率超过阈值时,触发熔断,直接返回失败 | 快速失败,隔离故障 | 防止级联故障(如服务依赖链) | 需合理设置恢复策略,避免长期熔断 |
| 异步调用 | 将非关键业务操作异步执行,主流程快速返回 | 解耦,提升吞吐 | 非核心业务(如日志、通知) | 需配置线程池,避免资源耗尽 |
4) 【示例】
spring:
cloud:
gateway:
routes:
- id: limit_route
uri: lb://service-a
predicates:
- Path=/api/**
filters:
- name: RateLimiter
args:
name: my-rate-limiter
rate-limiter: my-rate-limiter
period: 1s
permits: 10
@HystrixCommand(fallbackMethod = "fallbackMethod")
public String callExternalService(String param) {
// 调用外部服务
return externalService.call(param);
}
public String fallbackMethod(String param) {
return "服务不可用,请稍后重试";
}
@Service
public class AsyncService {
@Async("taskExecutor")
public void processAsync(String data) {
// 异步处理
log.info("处理异步数据: {}", data);
}
}
线程池配置:
spring:
task:
executor:
core-pool-size: 5
max-pool-size: 20
queue-capacity: 100
5) 【面试口播版答案】
“面试官您好,处理高并发请求的核心思路是分层防御,通过限流、熔断、异步调用等手段,结合Spring Cloud组件实现。首先,限流是控制请求速率,比如用令牌桶算法,每秒放10个令牌,超过的请求被拒绝,配置上可以用Spring Cloud Gateway的RateLimiter,指定QPS和令牌数。然后是熔断,当服务调用失败率超过阈值时,触发熔断,直接返回失败,避免级联故障,比如用Hystrix,设置失败率阈值,当超过时熔断,恢复策略可以设置延迟时间。还有异步调用,将非关键业务异步处理,比如日志记录,用@Async注解,结合线程池,提升吞吐。总结起来,就是通过限流防雪崩、熔断降级、异步解耦,保障系统在高并发下的稳定性。”
6) 【追问清单】
7) 【常见坑/雷区】