
目录一、整体高并发设计核心原则二、接入层高并发设计第一道防线1. 负载均衡水平扩容核心2. 限流防止流量冲垮服务3. 静态资源分离三、应用层Java 服务高并发设计1. 无状态化设计支持水平扩容2. 线程模型优化1Tomcat/Jetty 调优必做2异步 Servlet / Spring WebFlux响应式编程3. 异步化改造提升吞吐量神器实现方案4. 接口优化5. 服务隔离与熔断降级四、缓存层设计高并发灵魂1. 多级缓存架构2. 缓存核心方案1缓存策略2解决缓存三大问题3. Redis 高并发部署五、数据层高并发设计最后一道防线1. MySQL 优化2. 读写分离3. 分库分表海量数据必备4. 数据库连接池优化六、消息队列高并发削峰神器作用生产选型七、JVM 高并发调优八、高并发实战经典方案秒杀 / 下单九、高并发稳定性保障总结高并发核心目标提升吞吐量、降低响应延迟、保证系统稳定性核心设计思路是分层解耦、流量削峰、资源隔离、异步化、缓存化、水平扩容。本文会按照Java 后端架构分层接入层→应用层→服务层→数据层结合实战方案讲清楚高并发设计覆盖代码、架构、中间件、调优全维度。一、整体高并发设计核心原则能缓存绝不查库热点数据 100% 缓存能异步绝不同步非核心流程全异步能水平绝不垂直支持无限扩容能限流绝不硬扛保护核心服务不被打垮能隔离绝不共享避免单点故障拖垮全局二、接入层高并发设计第一道防线负责接收请求、流量过滤、负载均衡、限流是高并发第一道关卡。1. 负载均衡水平扩容核心硬件F5企业级软件Nginx、LVS、HAProxyJava 适配Spring Cloud Gateway / Zuul 网关集群策略轮询、加权轮询、IP 哈希、最少连接数2. 限流防止流量冲垮服务生产必用方案网关层限流Nginxlimit_req应用层限流Sentinel、Guava RateLimiter、Resilience4j限流算法令牌桶、漏桶、计数器3. 静态资源分离静态资源JS/CSS/ 图片全部放到CDN动静分离Nginx 直接返回静态资源不请求 Java 服务三、应用层Java 服务高并发设计这是核心层直接决定并发承载能力。1. 无状态化设计支持水平扩容Java 服务不存储会话、本地缓存等状态数据会话存储到 Redis服务可以无限加机器禁止使用本地内存缓存全局热点数据2. 线程模型优化1Tomcat/Jetty 调优必做properties# Tomcat 高并发配置 server.tomcat.threads.max800 # 最大工作线程 server.tomcat.threads.min-spare200 # 最小空闲线程 server.tomcat.accept-count1000 # 等待队列长度 server.tomcat.connection-timeout20000 server.tomcat.max-connections10000IO 密集型服务线程数设大一点CPU 密集型服务线程数 CPU 核心数 * 22异步 Servlet / Spring WebFlux响应式编程同步 Web一个请求一个线程高并发下线程耗尽异步非阻塞Spring WebFlux Netty少量线程支撑高并发适用网关、高 QPS 接口、IO 密集型服务3. 异步化改造提升吞吐量神器同步流程请求→校验→下单→扣库存→发短信→推消息→返回高并发改造只保留核心流程非核心异步执行实现方案Spring Async异步线程池消息队列削峰RabbitMQ / RocketMQ / Kafka线程池必须自定义禁止使用 Executors生产坑// 标准生产线程池 Bean public ThreadPoolTaskExecutor asyncExecutor() { ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor(); executor.setCorePoolSize(50); // 核心线程 executor.setMaxPoolSize(200); // 最大线程 executor.setQueueCapacity(1000); // 队列 executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); return executor; }4. 接口优化接口幂等性防止重复提交 / 重试token 机制、数据库唯一索引请求合并批量接口替代单条循环调用超时控制所有远程调用必须设置超时时间结果分页禁止全量返回大数据5. 服务隔离与熔断降级Sentinel按接口 / 服务限流、熔断、降级线程池隔离核心业务独立线程池不互相影响降级策略高并发时关闭非核心功能如推荐、统计四、缓存层设计高并发灵魂90% 的高并发瓶颈在数据库缓存能扛住 80% 流量。1. 多级缓存架构本地缓存Caffeine性能最高→ 热点小数据分布式缓存Redis 集群 → 全局共享数据CDN 缓存→ 静态资源2. 缓存核心方案1缓存策略读先查缓存→不存在查库→写入缓存写先更新数据库再删除缓存最稳2解决缓存三大问题缓存穿透布隆过滤器、缓存空值缓存击穿互斥锁、热点数据永不过期缓存雪崩过期时间加随机值、Redis 集群、熔断降级3. Redis 高并发部署主从 哨兵高可用Redis Cluster分片集群支撑 10 万 QPS禁用 keys *、hgetall 等高耗时命令五、数据层高并发设计最后一道防线数据库是高并发最薄弱环节必须少查、精查、分库分表。1. MySQL 优化索引优化最左前缀、避免索引失效、禁止 select *慢查询优化开启慢查询日志持续优化事务优化缩短事务执行时间禁止大事务2. 读写分离主库写、从库读MyCat、Sharding-JDBC 实现读写分离读多写少场景性能提升 N 倍3. 分库分表海量数据必备当单表 **1000 万 ** 必须分表垂直分库按业务拆分订单库、用户库水平分表按用户 ID / 订单 ID 哈希取模框架Sharding-JDBCJava 生态最主流4. 数据库连接池优化propertiesspring.datasource.hikari.maximum-pool-size50 # 核心 spring.datasource.hikari.minimum-idle10 spring.datasource.hikari.idle-timeout300000HikariCP 是 Java 性能最高连接池。六、消息队列高并发削峰神器秒杀、下单、支付等高并发场景必须用 MQ。作用流量削峰瞬间 1 万请求→MQ 排队→服务匀速消费异步解耦下单、支付、物流、通知解耦最终一致性分布式事务解决方案生产选型高可靠RocketMQ高吞吐Kafka通用型RabbitMQ七、JVM 高并发调优Java 服务自身优化减少 GC 停顿提升并发能力。# 生产JVM标配参数 -Xms8g -Xmx8g # 堆内存固定值避免扩容 -XX:UseG1GC # G1收集器高并发首选 -XX:MaxGCPauseMillis200 # 最大GC停顿200ms -XX:ParallelRefProcEnabled核心减少 Full GCFull GC 会导致服务卡顿。八、高并发实战经典方案秒杀 / 下单以电商秒杀为例完整高并发流程CDN → 静态页面Nginx → 限流、负载均衡Gateway → 接口限流、认证Redis → 商品库存、用户限购、缓存商品信息消息队列 → 异步下单、削峰服务隔离 → 秒杀服务独立集群数据库 → 分库分表、读写分离降级 → 秒杀高峰期关闭商品推荐九、高并发稳定性保障监控Prometheus Grafana 监控 QPS、RT、错误率压测JMeter、压测必须上线前做预案限流、熔断、降级、开关一键配置扩容支持服务 / Redis/MySQL 快速水平扩容总结Java 高并发设计不是单一技术而是整套架构体系前端 / 接入层负载均衡、限流、CDN应用层无状态、异步、线程池、响应式、隔离熔断缓存层多级缓存、Redis 集群、解决三大问题数据层索引、读写分离、分库分表中间件消息队列削峰解耦JVM优化 GC避免停顿