秒杀:(联想到多线程)
- 要求: 时间短 并发读 并发写;
- 扣库存预留库存方案,先扣库存,15分钟未付款加回去;
- 超卖问题;(优惠秒杀2台手机,10个人秒杀了10台)
- 完全反作弊;
- 10个人抢两台手机
业务处理逻辑
分布式事务和分布式锁解决方案,第三方协调者
mysql分布式锁
1、通过数据库主键和唯一索引做锁标识,同一数据库做协调者。
一张单独的表,使用lock和unlock锁住表
2、redis分布式锁,公司分布式锁方案。(单节点和分布式)
- setnx key value
- delete key
- 如果redis加锁机器挂掉,其他应用机器加锁,造成死锁怎么办?设置过期时间
- 问题1、号线程删除2号线程的锁怎么办?事务key值使用uuid,redis设置uuid的值,删除锁之前校验值是否一致,解决redis其他线程删除当前线程锁的问题
- 问题 2、设置过期时间问题?
- 看门狗解决
- 红锁