Java 接口高并发优化方案

我按从简单到深入、从前端到数据库的顺序讲。

一、接口入口层优化(最优先)

  1. 接口限流

    • 使用 SentinelGuava RateLimiter 做单机限流
    • 按 IP/用户/接口维度限制 QPS
    • 防止流量打崩服务
  2. 读写分离

    • 查询走从库,写入走主库
    • 用 Sharding-JDBC 或 MyBatis 拦截器自动路由
  3. 异步化

    • 非核心逻辑全部丢线程池或 MQ
    • 例如:日志、通知、统计、埋点、发短信、发邮件
    • 主线程只做核心逻辑,立刻返回

二、缓存优化(高并发核心)

  1. 加本地缓存 Caffeine

    • 热点配置、字典、少量不变数据
    • 比 Redis 少一次网络 IO,性能提升巨大
  2. 加分布式缓存 Redis

    • 商品、用户信息、订单快照、首页数据
    • 设置合理过期时间,避免不一致
  3. 解决缓存三大问题

    • 穿透:缓存空值 + 布隆过滤器
    • 击穿:互斥锁、热点数据永不过期
    • 雪崩:过期时间随机、Redis 集群、多级缓存
  4. 缓存预热

    • 启动时加载热点数据
    • 避免流量来了才大量回源查 DB

三、业务逻辑层优化

  1. 减少远程调用

    • 批量查询、合并 Feign 调用
    • 减少循环内调 RPC,非常影响性能
  2. 减少锁粒度

    • 不用 synchronized 大锁
    • 使用 Redisson 锁、分段锁、乐观锁
    • 能无锁就无锁(CAS、版本号)
  3. 对象复用、减少 GC

    • 避免频繁 new 对象
    • 减少大对象、减少内存拷贝
    • 使用池化:线程池、连接池、HttpClient 池

四、数据库优化(高并发瓶颈大多在这)

  1. 加索引、避免索引失效

    • 最左前缀、不使用函数、不类型隐式转换
    • explain 分析
  2. 避免大事务

    • 拆小事务
    • 禁止事务里包含远程调用、Redis、IO 操作
  3. 分库分表

    • 订单表、日志表按用户 ID / 时间分表
    • Sharding-JDBC 轻松实现
  4. 批量操作代替循环单条

    • 批量 insert、批量 update
    • 减少网络 IO 和事务提交次数
  5. MySQL 配置优化

    • 调整连接池、innodb_buffer_pool
    • 关闭不必要的 binlog、sync_binlog

五、MQ 削峰填谷(秒杀、订单必用)

  1. 请求先入 MQ,后台慢慢消费
  2. 防止数据库被高并发写打挂
  3. 用 RabbitMQ/RocketMQ 异步削峰

典型场景:

下单 → 扣库存 → 支付 → 物流

高并发下只做核心下单,其余全部异步


六、架构层面(高级优化)

  1. 集群部署 + 负载均衡

    • Nginx 分发
    • 服务无状态,水平扩容
  2. 动静分离

    • 静态资源放 CDN
    • 接口 API 走后端
  3. 服务降级、兜底

    • 核心接口保活
    • 非核心接口直接返回默认值
  4. 分布式锁

    • 秒杀、库存扣减必须加
    • Redisson 看门狗自动续期

七、你在面试可以直接背的总结(非常加分)

高并发接口优化我一般从这几层入手:

  1. 入口限流、异步化、读写分离
  2. 多级缓存(Caffeine+Redis)解决热点数据
  3. 业务层减少 RPC、缩小锁范围、避免大事务
  4. DB 加索引、批量操作、分库分表
  5. 使用 MQ 削峰
  6. 最后通过集群、降级、负载均衡 保证整体可用性
    这样一套下来,接口性能能提升 10~100 倍

相关推荐
qq_628515763 小时前
Java实现pdf导出
java·vue.js·react.js·pdf
无巧不成书02183 小时前
Java变量初始化全攻略:2026最新规范+新手避坑实战
java·开发语言·java基础·java变量初始化·java语法规范·var关键字
爱分享的阿Q3 小时前
技术饱和度视角下的编程语言选择:一场关于供需博弈的深度思考
java·python·go
Zafkiel8623 小时前
求助:macOS 运行 JavaFX 工具报错
java
有想法的py工程师3 小时前
PostgreSQL 性能优化实战:一条 Order by 的 SQL 从 5 秒优化到 100ms
大数据·数据库·postgresql·性能优化
A懿轩A3 小时前
【2026 最新】JDK 下载与安装:在 macOS 下使用 Homebrew 和 jenv 完美管理多版本 JDK
java·开发语言·jdk·mac
云烟成雨TD1 天前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
于慨1 天前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet