问题描述
- 关于高并发 数量剩余的问题 5C
- 我现在在做一个类似网易一元抢宝的项目(这个项目不需要生成订单),在支付结算的时候出现了好多问题,求大神帮我解决。
第一点:
加入该商品剩余商品50件,同时有好几百个人都把这个商品加入了购物车,第一个人和第二个人都想买30件商品,第一个人付款成功了,这个时候剩余商品就会变成了20件,但是第二个人此时购物车里如果不刷新的话还是能够买50件商品的,这个时候我该怎么解决这个问题?第二点:
还上面的情况,两个人都买30件商品,同时进入了支付界面,第一个人比第二个人先购买了30了支付成功,第二个购买的30个按理说是不能购买到的,那这个问题怎么办?第三点:
最后一件商品,多个人都加入了购物车,同时进入了支付页面,第一个人完成了支付,后面的人应该是支付失败的,这个该怎么办?其实我绝对这个就是一个问题,怎么解决高并发问题,我知道有个叫memcache 队列大概能解决,但是我也不会这个东西啊,求大神仔细说说流程,用到了哪些技术,怎么实现或者搭建这个技术。。。。。万分感谢
解决方案
memcache redis 这里的作数据缓存队列,内存数据库的效率高点。开始的时候商品放入到队列中,一个人一个事务,排队操作。
当然1000个人并发和10000个人并发处理是不一样的,并发大的做负载均衡。
因为没遇到过此类的需求,有可能说的不对见谅。
解决方案二:
先把每个人的提交等,放到Redis的队列中,然后再从队列中按顺序一个个取出来执行,这个时候,购买需要有事务处理,比如通过数据库等,这样第一个人购买成功后,第二个购买的时候,数据库只剩20个商品了,因为30个购买就失败了,然后把失败返回给客户端
时间: 2024-09-28 05:34:28