淘宝电商超卖问题是如何解决的【图文解答】

今天爱分享给大家带来淘宝超卖问题是如何解决的【图文解答】,希望能够帮助到大家。

淘宝超卖现象的产生及解决方案

一、什么是超卖现象? 
超卖即“超卖缺货”,当宝贝库存接近0时,如果多个买家同时付款购买此宝贝,将会出现“超卖缺货”现象。产生超卖缺货这种情况是商家无法控制的,并且发生这种情况的概率极低。 
二、电子商务的主交易流程: 
1,查询商品 2,创建订单 3,扣减库存 4,更新订单 5,付款 6,卖家发货 
(1)减库存的操作 
有两种选择,一种是拍下减库存 另外一种是付款减库存 
目前淘宝采用的“拍下减库存”的方式,拍下就是一瞬间的事,对用户体验会好些。 
库存会带来“超卖”的问题:售出数量多于库存数量 
由于库存并发更新的问题,导致在实际库存已经不足的情况下,库存依然在减,导致卖家的商品卖得件数超过秒杀的预期。这样的损失只能由淘宝来负责了。 
三、如何解决超卖的问题? 
方案:采用乐观锁。 
1,秒杀由于存在的广泛的用户,并发暴涨的情况下,一定要注意在
文案方面做得尽量人性话些。在系统承载不足的情况,不能让会员觉得被欺骗了。同时对于一些重要信息需要做到可查,比如显示订单的下单信息,付款信息等。 
2,在秒杀的时候,由于瞬时访问量导致应用的压力暴涨,数据库的load上升,IC(商品中心)的压力很大,从而导致了其他非秒杀的交易也受到了影响。 
解决方案:

1,增加应用的机器 

2,将秒杀应用与普通交易相隔离。对IC做了分组隔离,从而保证秒杀不会影响主站的其他交易。

3,由于商品详情页面(detail)该页面用户的刷新频率很高,所以 尽量将该页面静态化,淘宝的秒杀商品详情页面,去除了很多不必要的后台查询逻辑,比如卖家的信誉,星级等信息。 
4,detail页面的响应时间在3-5秒,主要原因是需要到数据库查询库存信息,该操作所花时间比较长,对数据库的压力也很大。所以采用了从缓存取库存信息。淘宝有一个tair缓存,在应用起来的时候,会将商品的库存信息加载到tair中。 
5,聚划算的一次秒杀活动中,出现超卖的情况,原因是:库存信息是从tair中取的,拍下时在tair中减少了库存,但是在真正购买时,会去更新数据库中的库存,这样就导致数据库的当前库存信息又去更新了tair中的库存信息。 

这件事情带来的思考是:尽量将信息保持一致,能够做到同一处修改最好。比如保持总库存以及sku的库存修改保持一致。 
后来的方案是:数据库中只记录默认的库存信息,对库存的更新都放在tair中去做。不过这个就要保证tair的足够稳定,不然tair挂掉,购买信息就全丢了。所以可以采用一些机制保证信息的可恢复。比如记日志,不过这种涉及到IO的也会影响性能了。 

6,最后,还可以租用更多的IDC,采用异地IDC架构,高效的CDN架构,及其全局服务负载均衡系统,完全可以解决问题。

人已赞赏
Java数据库

[mysql spring]The server time zone value ‘???’ is unrecognized or represents more than one time zone. 【解决方案】

2020-10-27 17:22:11

数据库

使用dapper扩展读取,报异常:Error Parse column: ** - Object.【解决办法】

2020-10-29 15:39:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
'); })();