学来的,个人备忘
什么是秒杀?难点在哪?
秒杀系统难点(what)
高并发、负载压力大
竞争资源是有限的
避免对其他业务的影响
提防“黄牛党”
秒杀系统应用场景(why)
商品抢购
群红包
优惠卷领取
抢火车票
在线预约
技术维度对秒杀系统的分析 —— 架构原则
技术维度对秒杀系统的分析 —— 优化技术
(1)场景描述
业务描述:有100台苹果7手机,模拟200个用户同时请求购买,每个人都购买N台手机
实现原理:基于数据库的乐观锁 表t_goods_info
update t_goods_info set
amout = amout - #{buys}
where code = #{code} and amout - #{buys} >=0
优势与问题
优势
实现简单
最可靠
劣势
并发量小 300 - 700
(2)场景描述
业务描述:有100台苹果7手机,模拟200个用户同时请求购买,每个人都购买N台手机
实现原理:基于缓存的乐观锁 。基于memcache的decr,decr是原子的。
使用decr的问题
decr是有毒的
Decr的返回值有只有三种情况,
“>0”“=0”“=-1”
10 – 100 =0
解决的办法
轻量级的锁机制CAS机制
/**解释:Check and set ,即保存之前进行版本检查,memcache 1.2.4新增的特性。**/
gets: 获取item,并获取版本号
cas:更新item,并上传获取item
时的版本号,版本号与服务器一致
才能更新成功
基于memcached 代码演示
云盘地址 ckpx