有一个需求:
规定某件商品只能卖5000件,
1:我怎么才能保证不多卖出?
2:假如现在已经卖了4999件,来了一个客户,下订单要买2件,怎么处理它的订单?
3:如果有很多人同时在买,怎么处理并发问题,同时能解决上面的二点。
做过电商的能不能讲下有哪些思路?
你看这样如何呢?
能买5000,这是一个限制问题..那么加一个表,规定哪个商品能买多少件..
程序启动后..将每个商品的ID作为Key,{限制件数,当前买出数}new一个自定义对象 放入一个HashTable中作为Value,这样就只读取一次数据库.
对买出数的更新加个Volatile关键字来保证原子操作.
这样多线程的并发更新就得到解决,
在用户加入购物车时,可以从已买出和总限制这2个变量知道还能买几个...
当用户的数量大于能买的时给出提示...
用户提交订单时,再次检查已买出变量..决定是否能下单,下单之后更新变量.
这时大概思路..希望能帮到你.
你就是传说中的全栈工程师,连业务需求都包揽了。
这里是帮助别人的地方,没卵用的评论请移步网易评论区
传说中的老板兼程序员和CTO,
听说编程很简单。
500元做一个商城。
这里是帮助别人的地方,没卵用的评论请移步网易评论区
@wulawulaho: 然而谁来评价有啥卵用。
吃着沙县料理,操着中南海的心,这种人不一棍子打醒,一辈子也只能看看陈安之了。
1: 在设计数据库的时候,在商品表里,对应的商品弄一个卖出数量,每买一件++,到了5000以后就禁用购买按钮或产品下架
2: 这种情况就得看业务了,a: 如果这个商品库存就只有5000,售出4999, 就只剩下1件了,你可以给个友好提示,说商品只剩下一件了,叫他买一件,然后给出类似的商品推荐,看他是否有意向购买
b:倘若库存很足,而多卖一件不影响大局的话,那就卖给他。
3: 这个可以用锁来解决,无论也数据库的锁还是前端锁都可以。
纯手打,有问题就继续追问, 没问题就请采纳吧! :)
可是我这个商城是要面向全宇宙的,要考虑300亿人并发处理咋办?
@爱编程的大叔: 这个很简单, 那咱就做300亿个商城,保证1对1买卖,人手一个app。 这就不存在并发了。
只能卖5000件,那你显示的时候就显示5000件啊,客户下两件的订单,给个提示不就行了
这个问题很好解决。
现在程序构架一般都是SOA,RPC等方案,下订单只需要把商品的编码、要购买的数量传递给一个RPC就行。
如果返回True,则说明成功下单,如果返回False,就说明没成功。
至于页面上显示还有10件,你买2件却没买到,这很好解释,你购买的过程中,被别人买光了。
这个业务是需要加一个扣库存的概念,
你要确定在订单流程的哪一步扣库存,扣库存失败时怎么处理,至于并发就不多说...并发解决不了就别扯这么高深的问题了