Rails 如何实现抢购功能

chile · 2016年04月27日 · 最后由 chile 回复于 2016年04月29日 · 3659 次阅读

毕业设计做的是一个在线抢购的平台,想问一下怎么才能实现抢购的功能,主要是要保证数据一致性。。。抢着抢着就变成了-1.。。好蛋疼。。求教

共收到 17 条回复

点了抢购按钮,用户抢购信息直接进队列之类来顺序处理.可参考golang在小米抢购系统

CAP模型,看你放弃AP哪个了。队列确实不错,可以认为牺牲了A。

偷懒可以用摇奖的方法,比如1000台机器,允许有超过1000个人买,然后进入摇奖系统,摇到的才给付钱。

java 的话用 ThreadLocal、volatile、synchronized,数据库的五种事务隔离

抢购真要做好可不是那么简单的,好的电商团队多年打磨才能做好一个抢购系统,你毕设做这个真是牛逼啊

最简单的做法,用 redis . 以商品id为redis键,比如id是1. 设置100个库存 set 1 100 用DECR减库存 decr 1 , 返回如果小于0,那么库存不足,用 incr 1 把库存加回0,再返回给客户端库存不足.

不久之前我给一个作坊公司做过一个抢购系统,在他们的一个特别垃圾的架构上一个人花了两周时间做出来的,确实不是那么好做,那公司现在还拿这功能到处吹了,就这还嫌开发进度慢,早知道这玩意儿这么值钱我就去北京做了

设置一个队列,把队列的长度设置为商品库存量的长度。然后请求进来直接放入队列,超出队列长度的返回抢购结束。然后队列的用户慢慢执行库存减少、订单生成、订单支付等操作。

很多的, 做交易所的有各种每秒百万请求的配单系统轮子

队列?

#1楼 @yzdel2000 好的我看一下哈~谢谢~

#9楼 @haoxilu 嗯嗯OK,谢谢提供思路

#6楼 @cxh116 OK,我看下大家提供的方法实现的难度😂,thx

#5楼 @alucardpj 额。。。内部抢购,不用做那么牛逼。。。。并发不会那么多。。。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册