关于抢购,秒杀的一些细节

原创 2016年08月29日 10:37:05

以下均为出现在抢购、秒杀的常经理

1、token的作用

token的用法为,用户渲染商品抢购页面时,服务端做一个加密处理,可以考虑为用MD5(户ID + 商品ID + 任意数字(例如用户生日)) .

这个做法的关键是,防批量刷新商品。

例如:

A、一个用户在登录态下,刷所有抢购商品接口。

B、一个用户不同的切换账号,来刷所有抢购商品接口。(如果登录有验证码,此步可以忽略)



2、关于减库存的导致超卖的问题

减库存的操作是比较复杂的,主要利用mysql innor db 的update的写锁机制。

update status = 1 where ItemId = xxx  and status = 0 limit 1;

并发数的考虑为库存*10,可以用nginx限流。(mysql连接池限流的话,服务端压力会过大,因此建议在上层反向代理限流)

分一下两种情况

A:当抢购商品为1件时

10个用户并发,只有一个用户能在执行这条sql上返回1,其他均为0。因此,返回1 的那个用户为抢购成功的用户,可以继续向下走流程。其他用户返回抢购失败。

B:当抢购商品大于1件时

为了防止多个线程去更新1条数据,行级锁导致大量线程争抢,就是 update num = num -1 这种。

因此,需要把这个商品拆成 N条数据,每条数据的抢购数都为1。(在抢购前,这些数据要提前添加好,等抢购开始时只做状态变更)

第一步,先查出主键(随机返回主键)

a1方法:select 主键 from table_name whereItemId = xxx  and status = 0  ORDER BY RAND() limit 1;

a2方法如果你用 ORDER BY RAND() 来随机读取记录的话,当数据表记录达到30万或者更多的时候,mysql将非常吃力. 那么用这种方案:取出所有主键,代码中ramdom随机取出一个。

第二部,update status = 1 where 主键 = xxx  and status = 0。

这样,多个线程争抢与库存值相等的数据 的情况下,就会减少等待时间。


JS整点抢购倒计时

js倒计时实现可用于整点抢购
  • qq_35349114
  • qq_35349114
  • 2017年07月28日 18:54
  • 377

Token验证失败的解决方法

Token验证失败的解决方法
  • yafei450225664
  • yafei450225664
  • 2016年11月11日 15:12
  • 6919

php结合redis实现高并发下的抢购、秒杀功能

*原文地址: http://blog.csdn.net/nuli888/article/details/51865401 抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个: ...
  • lmjy102
  • lmjy102
  • 2017年04月10日 16:12
  • 621

高并发抢购思路

电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们...
  • qq_34341290
  • qq_34341290
  • 2016年11月24日 08:57
  • 2774

Java高并发秒杀API(四)之高并发优化

Java高并发秒杀API(四)之高并发优化1. 高并发优化分析 关于并发 并发性上不去是因为当多个线程同时访问一行数据时,产生了事务,因此产生写锁,每当一个获取了事务的线程把锁释放,另一个排队线程...
  • lewky_liu
  • lewky_liu
  • 2017年10月06日 17:07
  • 1567

关于抢购,秒杀的一些细节

以下均为出现在抢购、秒杀的常经理 1、token的作用 token的用法为,用户渲染商品抢购页面时,服务端做一个加密处理,可以考虑为用MD5(户ID + 商品ID + 任意数字(例如用户生日)) . ...
  • zhao9tian
  • zhao9tian
  • 2016年08月29日 10:37
  • 494

redis使用watch秒杀抢购思路

1、使用watch,采用乐观锁 2、不使用悲观锁,因为等待时间非常长,响应慢 3、不使用队列,因为并发量会让队列内存瞬间升高import java.util.concurrent.Executor...
  • qq1013598664
  • qq1013598664
  • 2017年04月15日 13:02
  • 4438

网站大规模并发处理方案:电商秒杀与抢购

目录 一、大规模并发带来的挑战 1. 请求接口的合理设计 2. 高并发的挑战:一定要“快” 3. 重启与过载保护 二、作弊的手段:进攻与防守 1. 同一个账号,...
  • HUXU981598436
  • HUXU981598436
  • 2017年03月09日 17:24
  • 1204

限时抢购秒杀系统架构分析与实战

转发:http://www.jb51.net/article/77560.htm 1 秒杀业务分析 正常电子商务流程 (1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订...
  • evan_shc
  • evan_shc
  • 2016年02月03日 15:38
  • 2730

ACCESS TOKEN

ACCESS TOKEN
  • yafei450225664
  • yafei450225664
  • 2016年11月11日 15:11
  • 3882
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于抢购,秒杀的一些细节
举报原因:
原因补充:

(最多只允许输入30个字)