51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

使用Spring Boot开发后端服务,如何处理高并发请求?请说明具体的技术手段(如限流、熔断、异步调用),并举例说明如何配置。

南京理工大学就创中心网络辟谣岗(京内生源)难度:中等

答案

1) 【一句话结论】处理高并发需通过限流(控制请求速率防雪崩)、熔断(故障隔离防级联)、异步调用(解耦提升吞吐)等手段,结合Spring Cloud组件实现,核心是分层防御保障系统稳定性。

2) 【原理/概念讲解】老师口吻:

  • 限流:核心是“控制请求速率”,防止服务器因突发流量过载。类比“交通限速”,每秒允许进入系统的“令牌”数量固定(如令牌桶算法),请求需获取令牌才能通过,超过则被拒绝。
  • 熔断:当服务调用失败率超过阈值时,触发“快速失败”,直接返回失败结果,避免级联故障(如服务依赖链崩溃)。类比“保险丝”,故障时切断电路,避免整个系统损坏。
  • 异步调用:将非核心业务(如日志记录、通知推送)从主流程中剥离,异步执行,让主流程快速返回,提升系统吞吐。类比“快递分拣”,核心包裹(主流程)先发,非核心包裹(异步任务)后续处理。

3) 【对比与适用场景】

技术手段定义特性使用场景注意点
限流控制请求进入系统的速率,防止服务器过载令牌桶/漏桶算法,可配置QPS(每秒请求数)保护后端服务,应对突发流量配置不当可能导致合法请求被拒绝
熔断当服务调用失败率超过阈值时,触发熔断,直接返回失败快速失败,隔离故障防止级联故障(如服务依赖链)需合理设置恢复策略,避免长期熔断
异步调用将非关键业务操作异步执行,主流程快速返回解耦,提升吞吐非核心业务(如日志、通知)需配置线程池,避免资源耗尽

4) 【示例】

  • 限流配置(Spring Cloud Gateway + RateLimiter):
    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
    
  • 熔断配置(Hystrix):
    @HystrixCommand(fallbackMethod = "fallbackMethod")
    public String callExternalService(String param) {
        // 调用外部服务
        return externalService.call(param);
    }
    public String fallbackMethod(String param) {
        return "服务不可用,请稍后重试";
    }
    
  • 异步调用(@Async + 线程池):
    @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) 【追问清单】

  • 问题:限流的具体算法(令牌桶/漏桶)如何选择?
    回答要点:令牌桶适合突发流量(如秒杀),漏桶适合匀速流量(如持续请求),根据业务场景选择。
  • 问题:熔断的触发条件和恢复策略如何设置?
    回答要点:触发条件是失败率超过阈值(如50%),恢复策略是延迟时间(如5秒)后重新测试服务是否恢复。
  • 问题:异步调用的线程池大小如何配置?
    回答要点:核心线程数设为CPU核心数,最大线程数设为核心数*2,队列容量设为合理值(如100),避免资源耗尽或任务积压。
  • 问题:如何监控这些机制的效果?
    回答要点:通过监控工具(如Prometheus+Grafana)监控限流请求数、熔断次数、异步任务队列长度等指标。
  • 问题:分布式环境下如何实现限流?
    回答要点:使用分布式限流组件(如Sentinel),结合Redis存储令牌或计数器,实现全局限流。

7) 【常见坑/雷区】

  • 限流配置不当导致合法请求被拒绝(如QPS设置过低)。
  • 熔断器恢复策略设置不合理(如延迟时间过短,频繁触发熔断)。
  • 异步调用线程池大小配置错误(如核心线程数过小导致任务积压,过大导致资源耗尽)。
  • 未考虑分布式限流(单机限流在分布式环境下失效)。
  • 熔断与限流的混淆(认为两者功能相同,导致配置错误)。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1