秒杀方案:
原子计数器 redis/mysql redis 集群
记录行为 分布式MQ-rabbitMQ
消费消息并落地 mysql
运维成本和稳定性:NoSQL MQ
开发成本:数据一致性,回滚方案等。
幂等性难保证:重复秒杀问题。
不适合新手的框架。
=======
为什么不用mysql mysql低效
测试-
同一条mysql update 压力测试 4w qps 每秒4万次。
优化方向 减少行级锁的持有时间。
update确认影响记录数
优化思路:
把客户端逻辑放到mysql服务端,避免网络延迟和GC影响。
定制sql方案:
- update /*+[auto_commit]*/,需要修改MySQL源码
- 使用存储过程:整个事物在MySQL端完成。
优化总结:
前端控制:暴露接口,按钮防重复。
动静态数据分离:cdn缓存,后端缓存。
cdn--api像cdn推送数据和页面等。
事务竞争优化-减少事务锁持有时间。有网络延迟和GC,改成MYSQL处理。