秒杀系统如何包装简历?
2025-12-19
项目名称:秒杀系统
核心技术:SpringBoot、Spring Security、Mybatis、Redis、MySQL、RocketMQ、Caffeine、themleaf、Redisson、Lua等。
项目描述:秒杀系统是商城业务中的一个独立子系统。考虑到商品的秒杀场景是一个高并发的业务场景。为了在应对突增流量的情况,不影响主业务,因此增加了专门的秒杀系统。用户可以秒杀商品、下单、支付、取消订单等。
我的职责:主要参与秒杀系统的设计和相关代码的编写。包括:商品列表页面、商品详情页面、订单详情页面、订单列表页面等功能开发,其中商品详情页面包含了秒杀功能。
项目亮点:
- 首先商品页面使用themleaf做了静态化处理,未到秒杀开始时间,秒杀按钮是置灰的,用户不可点击。解决了前置的恶意流量的问题。
- 商品数据通过缓存预热的方式,提前加载到Redis中,用户获取的商品信息,直接从Redis中查询出数据,效率非常高。
- 秒杀商品时,增加了动态验证码,拦截了部分恶意请求。
- 秒杀商品时,增加了Caffeine内存缓存的校验,如果商品已售罄,可以直接提示用户。
- 秒杀商品时,校验商品是否存在,库存是否足够,该用户商品已经秒杀过该商品,都在Redis中操作,保证了接口的高并发。
- 扣减库存使用了Redis的原子方法incrBy,保证了数据的一致性,非锁操作,保证了接口的性能。
- 商品秒杀成功之后,通过MQ走异步下单,保证了秒杀商品接口的性能。
- 使用Redission配合lua脚本,实现了分布式锁,保证了修改库存接口的数据一致性。
- 使用RocketMQ的延迟消息,实现了用户下单后,超过30分钟未支付,回退库存的功能。
常见问题
1 部署了几台服务器?单个节点QPS多大?
2 秒杀系统如何保证高并发?
3 库存是如何扣减的?
4 项目中有没有使用Redis分布式锁?
5 用户下单后,超过30分钟未支付,回退库存如何实现?
如何获取项目源代码、完整教程和问题答案?
