2026年6月22日/ 案例
TicketRush 高并发票务秒杀系统
Java 21 + Spring Boot 3 高并发票务项目,覆盖防超卖、限流、异步削峰、幂等、最终一致性、压测、监控和部署闭环。
运行画面
Screens / Motion





问题
秒杀系统的核心在热点票档、高并发和重复请求下处理库存、入口流量、异步补偿和监控指标,并让这些行为可以通过压测和脚本检查。
方案
我把主链路拆成 Sentinel 限流、Redis 准入令牌、Java 21 Virtual Threads 库存预占、Redis Lua / Redis Lock / MySQL 乐观锁三种防超卖策略、RocketMQ 异步下单、消费幂等、订单超时关闭补偿,以及 Prometheus/Grafana 指标闭环。
展示重点
TicketRush 主要记录秒杀系统的后端主链路:库存扣减、重复请求、入口限流、异步下单和监控指标都可以在本地跑起来检查。
1000 -> 999 -> 999
DuplicateCode: A0429
processedByVirtualThread: true
工程讲解
可以先用 smoke 脚本展示库存轨迹和幂等结果,再解释 Redis Lua、分布式锁、MySQL 乐观锁三种策略的差异,最后用压测报告和 Prometheus 指标说明库存、重复请求和入口治理的实际表现。
实现细节
这个项目主链路从抢票入口开始:请求先经过 Sentinel 全局/热点票档限流,再通过 Redis 准入令牌控制进入库存扣减链路的并发量。库存预占在 Java 21 Virtual Threads 中执行,底层可切换 Redis Lua、Redis 分布式锁和 MySQL 乐观锁三种策略,方便做横向压测。
抢票成功后不会同步创建完整订单,而是发布 RocketMQ 消息异步下单;消费者负责幂等创建 PENDING 订单,发送失败或订单超时会触发库存释放。项目还用 k6、Prometheus、Grafana 和 smoke 脚本验证库存轨迹、重复请求、限流比例和 p95 延迟。
这个项目聚焦后端主链路:防超卖、削峰、幂等、一致性和可观测。支付、短信、实名制和多租户 SaaS 暂不放进首版,避免把范围拉得太散。
The main flow starts at the rush-ticket API. Requests pass through Sentinel global and hot-SKU limits, then Redis admission tokens control how many requests enter the inventory reservation path. Reservation runs on Java 21 Virtual Threads and can switch between Redis Lua, Redis Lock and MySQL optimistic locking for benchmark comparison.
A successful reservation does not synchronously create the full order. It publishes a RocketMQ message for async order creation; the consumer creates a PENDING order idempotently, and failed sends or expired orders release reserved inventory. k6, Prometheus, Grafana and smoke scripts validate inventory flow, duplicate requests, throttling ratio and p95 latency.
I position this as a backend engineering showcase rather than a complete commercial ticketing platform. Payment, SMS, real-name verification and multi-tenant SaaS are intentionally out of scope; the project focuses on oversell prevention, peak shaving, idempotency, consistency and observability.
复盘