秒杀项目的注意事项

秒杀和拍卖是各类网站搞活动的主力军

参与秒杀这类活动的动力在于较小的代价甚至是无代价的获得比较大的回报.

作为技术人员,关于秒杀的开发应该注意些什么呢?

1、验证码,这个虽然不能完全阻止利用技术手段参与或攻击平台,但是目前最有效的防范手段。在验证码的问题上还要注意一些问题,首先是用户不能提前获得验证码,这个很重要,大多数情况下验证码是和session无关的,验证的参数是一个token和用户输入,而这些参数的传递是包装在post或get请求中,稍微有点技术功底的人都可以拿到。至于为什么用户能提前拿到验证码,根据网站的安全情况可能存在很多情况,比如在网站的其它地方有验证码,用户拿到token可以在秒杀时用(安全的做法,应该是不能用的)。

   综上:验证码应该必须是服务器端生成的(绝对不可以交给前端,前端的安全只是表面现象),验证码必须是此处唯一的不得和网站其它地方混用,验证码发放必须是有时间判断的在逻辑上不可能提前获得的。

2、库存控制,针对秒杀的库存控制普通数据库显然是无法胜任的,我们需要的是内存数据库,当前比较好用的是redis。首先遇到的是主从问题,大多数情况下我们的架构是一主多从,首先这个问题不能通过查询库存---减库存来做,因为主从延时的缘故,这可能会有误差,通过incr类命令比较好直接访问主库,返回名次.还有一种比较棘手的情况,如果我们有多各机房比如南方有机房北方也有机房,而主库只在其中一个机房,机房延时一般是几十毫秒到上百毫秒,这对于南北方用户是不公平的,极端的情况可能导致一方用户完全无法秒到.


如果是需要支付的活动,还存在另一个问题支付之前减库存还是支付之后减库存,如果支付之前减库存,意味着若用户秒到之后支付不成功或者不想要了没有付款,意味着商品卖不掉了,如果支付之后减库存中间的时间差显然是不可接受的


3、并发测试,秒杀活动的并发测试是必须进行的


4、免费秒杀绝对不允许多秒


5、记录明细,把没有秒到的用户也记下来(这很重要,一方面可以给产品去分析都有那些用户参加了这次活动,另一方面万一存在作弊用户,也可以从候选名单中补齐),记下是在哪个机房秒到的,秒到时间精确到毫秒(时间必须是ui层生成,不能是写库时生成)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值