高并发秒杀系统技术架 构解析和实践

学来的,个人备忘

什么是秒杀?难点在哪?

秒杀系统难点(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

Redis 与 memcached 的秒杀之争

这里写图片描述

互联网架构师技能树

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_16681279/article/details/78499078
今日推荐