这是我提出的一个相当笼统的问题。
我有一个产品‘钢笔’,它的数量是1。现在有2个用户a和b已经开始购买product.User 'a‘点击购买,并且已经开始付款处理,一旦付款完成,产品的订单将被创建,我将把数量减少到零,用户b将将该产品视为“缺货”。这是一个更宏观的解释。
用户a正在进行支付,在用户b之间也单击“支付”并进行支付过程。用户甲完成订单,数量减少到zero.User b,完成付款,订单失败!
这个问题是如何由电子商务网站管理的?这是否就像,当用户继续进行产品的付款时,数量是否减少到零?如果该订单失败(由于付款失败),该数量是否会增加,以便其他用户可以购买?
这种情况是如何管理的?
发布于 2016-01-08 16:39:45
有许多具体的策略来处理这个问题。一般来说,它主要归结为使用某种类型的事务(例如在db中,或者在内存中锁定对象),或者使用补偿策略。我想说的是,许多业务域都使用这两者的组合。
音乐会领域通常允许预订,这是很好的几分钟,在此期间可以下订单。预订机制可以使用事务,因此库存可以从免费到保留,再到购买(或返回免费)。除非预订成功,否则他们不会向你收费,但如果你的付款失败,他们很快就会收回库存。
航空公司同样存在同样的问题,也使用预订,但通常有一个更广泛的分布式计算问题,因为它们允许合作伙伴航空公司和旅行社也出售机票。结果,他们最终可能会超额预定航班,然后他们会奖励那些放弃座位的人。特别是在过去,他们会提前将一些库存分发给第三方卖家,试图帮助解决分布式计算问题。
当你浏览商品时,电子商务网站可能会试图通知你低库存的情况。电子商务网站有时会失败(库存纯粹是错误的,或者,对某些商品的需求过大),在没有库存的情况下进行付款。然后他们道歉然后还钱。就像航空公司一样,他们可能会为不幸的用户提供额外的补偿。
从根本上说,在商业上,人们期望达成协议(即购买协议),这些协议有时会失败,需要处理。故障可能在库存,或产品在运输中损坏/丢失,或产品可能有缺陷。处理这些问题通常会使用补偿策略。业务运作的一个要点是调整这些策略(最大化利润,最大限度地保留客户,等等)。
https://softwareengineering.stackexchange.com/questions/306878
复制相似问题