秒杀的高并发如何处理性能?

黑帽子 发布于 2013/09/06 10:38
阅读 5K+
收藏 1
如何解决高并发的问题???每次秒杀人多,服务器就受不住了。。因为一个秒杀要调别人公司的接口,又要查数据库,性能要怎么解决???
加载中
1
专业打酱油
专业打酱油

1、设计一个算法,比如过滤90%用户,返回信息给用户:比如范围网络忙,请稍后或提交中等

2、通过js计算出结果,符合要求的用户,才能发送请求

3、服务器获得请求,用另外一个算法,计算出真正秒杀的结果

4、没货了,服务端更改第一个算法的结果闩值,阻挡所有请求

0
游侠
游侠
放队列,走异步。
0
Tuesday
Tuesday
学习小米呀. 开秒之前就排队.
0
卖红薯
卖红薯

1,缓存,2,放弃一部分用户

如果瓶颈出现在调别人接口的时候,我也想知道。

0
卖红薯
卖红薯

引用来自“专业打酱油”的答案

1、设计一个算法,比如过滤90%用户,返回信息给用户:比如范围网络忙,请稍后或提交中等

2、通过js计算出结果,符合要求的用户,才能发送请求

3、服务器获得请求,用另外一个算法,计算出真正秒杀的结果

4、没货了,服务端更改第一个算法的结果闩值,阻挡所有请求

实际工作中还有一个问题,用户订单支付失败或者取消订单,几分钟以后会再次进入秒杀池。

这里的逻辑麻烦一些,需要不断更新秒杀池的数据,不断查询,这里的并发是个难点。

0
专业打酱油
专业打酱油

引用来自“杨大爷”的答案

引用来自“专业打酱油”的答案

1、设计一个算法,比如过滤90%用户,返回信息给用户:比如范围网络忙,请稍后或提交中等

2、通过js计算出结果,符合要求的用户,才能发送请求

3、服务器获得请求,用另外一个算法,计算出真正秒杀的结果

4、没货了,服务端更改第一个算法的结果闩值,阻挡所有请求

实际工作中还有一个问题,用户订单支付失败或者取消订单,几分钟以后会再次进入秒杀池。

这里的逻辑麻烦一些,需要不断更新秒杀池的数据,不断查询,这里的并发是个难点。

这是业务问题
1、几分钟到底是几分钟呀
2、要是几分钟还没秒杀完。。。这还叫秒杀吗。。。
3、付款可以延迟吗,秒杀结束后2小时后开始付款,24小时结束
4、更新池的数据,我理解你说的就是把失败的订单对应的货物,重新放入池中。
5、这个比例应该很小,就算不放进去,影响也不大,当然得看业务
6、不断查询是啥情况,如果觉得db压力大,不要db都可以,直接写log,秒杀技术导出log,脚本导入数据库
7、上面说的是都是秒杀货物很小的情况,如果秒杀的货物本身就很大,虽然用户/秒杀货物比例看着不大,实际秒杀货很多的时候,可能要重新考虑一下设计了。
返回顶部
顶部