基于rabbitmq秒杀系统基本架构, 通过异步下单, 完美解决高并发场景下的商品超卖,暴库
git clone https://github.com/wg/wrk
// 生产端
go run getOrder.go
// 消费端
go run consumer.go
- 使用CDN,权限验证尽可能地拦截流量
- 启用消息队列流量削峰机制
- 增加IP限流策略 如漏桶法限流,设置异常流量黑名单
- 秒杀开始后 后台再返回秒杀接口地址
- 更高级点儿,像小米一样 前台不请求后台接口或后台随机丢弃请求 直接提示抢购失败, 这两种从数学期望角度看 并不影响抢购的公平性。
- 多个秒杀商品可以分批次秒杀
mysql事务 + for update 排它锁
缺点
for update 仅适用于InnoDB, 且索引使用不当会升级为表锁
redis事务 使用watch命令会监视给定的key来实现秒杀