電商的庫存設計,是后臺的重點手形,也是難點啥供,關乎商品是否存在超賣。商品的庫存增加方式倒不難库糠,直接在后臺添加即可伙狐,而扣減方式就尤為重要,用戶在前端提交訂單減庫存瞬欧,還是在支付成功后減庫存贷屎,兩種方案各有利弊,對后臺庫存數(shù)據(jù)的變化影響也很大艘虎。
這里且先不說兩種方案的利弊唉侄,先看看淘寶是如何做的,淘寶是將兩種方案都做了野建,給賣家選擇属划。
12306是怎么做的呢,小編大膽的猜想候生,是支付成功后同眯,減的庫存,而且一定是唯鸭。
下面來分析下兩種方案的利弊:
第一種须蜗,提交訂單的時候減庫存:加入A商品庫存數(shù)為100,采用下單后肿孵,減庫存的方案唠粥,常規(guī)商品系統(tǒng),下單歸下單停做,支付歸支付,是區(qū)分開的大莫,例如在10分鐘內蛉腌,有99個人下單了并且支付,身下一個訂單只厘,同一個時間烙丛,有兩個人同時下單,比如都是2019.10.10 12:32:12 這個時間點羔味,由于系統(tǒng)在這個時間點判斷都還有一個庫存河咽,所以他們兩個都完成了下單操作,此時庫存為商品庫存為0赋元,但是實際上是101個人下了單忘蟹,而且這101個人都可以支付成功飒房,這時候就出現(xiàn)了超賣現(xiàn)象。
出現(xiàn)這種情況的場景有兩個:一個是商品火爆媚值,短時間內被下單狠毯,還有一個是商品庫存量小。
優(yōu)點:實時減庫存褥芒,避免付款時應庫存不足嚼松,減庫存問題
弊端:存在說在短時間內,很多人都下單了锰扶,但是沒有支付献酗,一直鎖定著庫存數(shù)據(jù)。真正的買家買不到
第二種坷牛,在支付成功的時候減庫存:案例同第一種方案中的案例罕偎,也是存在同樣的問題,在同一個時間點:比如都是2019.10.10 12:32:12 這個時間點漓帅,100件庫存锨亏,有101人同時支付,產品依然存在超賣現(xiàn)象
優(yōu)點:防止有人惡意下單忙干,占用庫存
弊端:在并發(fā)量很高的情況下器予,依然會存在超賣現(xiàn)象。買家認為已經下單了捐迫,但是告知不能付款
這就解釋了為什么小編猜想12306一定是采用支付成功后乾翔,減庫存問題,由于用戶買車票的人太多施戴,經常出現(xiàn)剩下的票數(shù)很少反浓,很多人搶票的問題,如果是下單赞哗,沒減庫存雷则,車票會被占用,想買的人買不到肪笋。另外也解釋了為什么在12306網(wǎng)站上看到還剩余一張車票月劈,支付的時候,告知沒有車票的問題藤乙。就是剩下一張票猜揪,被多人下單,而實際只有一人能支付成功坛梁。
解決方案
關于超賣問題而姐,根本上是不可解決的,(目前為止划咐,小編了解到)拴念,但是可以通過一些優(yōu)化方案钧萍,將風險降低
方案一:限制用戶下單數(shù)量:小編經常在某寶上看到,該商品限購五件丈莺,其實并不是限購五件划煮,而是該商家采用下單減庫存,為了防止有人惡意下單缔俄,所以采用了限制用戶下單數(shù)量解決該問題弛秋。實際上你想買多少件,都會有的
方案二:對惡意下單的做標識:這種方法相當于黑名單俐载,該用戶出現(xiàn)惡意下單蟹略,標記,被標記后有一定的約束條件遏佣,這是后話
方案三:后臺庫存預警:后臺庫存預警挖炬,是一種很好很有效的方法,一方面状婶,提示該商品快沒有貨了意敛,讓賣方跟進,另一方面膛虫,如果是有人惡意下單草姻,可以采取一定的措施去處理
方案四:備用庫存:備用庫存,即同一個商品提供了兩個庫存稍刀,這是網(wǎng)上看到的一種方案撩独,小編覺得并沒有將問題改善、但是從設計人員账月,開發(fā)人員的角度去考慮综膀。不失一種良策。
關于秒殺活動對庫存問題的分析
上文提到局齿,商品庫存是下單還是支付環(huán)節(jié)扣減庫存剧劝,均是考慮并發(fā)的問題,而秒殺活動更是短時間內的并發(fā)抓歼,秒殺具有時效性担平,短則一秒,長則不過數(shù)十小時锭部。
既然秒殺的商品有時效性,其實是對庫存更好的控制面褐,時間未開始拌禾,和時間已結束,則不能下單支付展哭,在活動時間內才可以進行支付湃窍,而且要采用下單成功闻蛀,減庫存,為什么呢您市,假設活動只有一秒觉痛,如何讓用戶在短短一秒的時間完成下單并支付,明顯是做不到的茵休,同樣的如果活動時間是1小時薪棒,在這一小時內,有人下單榕莺,可以設定在多短的時間內要支付俐芯,否則系統(tǒng)要對訂單自動關閉霎肯,即釋放庫存搞乏,這樣可以讓別的買家在進行購買。
這里有人提出一個問題蕴轨,例如活動是一小時唠雕,而下單后贸营,假如是5分鐘內要支付,那么會出現(xiàn)說在活動時間的最后兩分鐘岩睁,有人下單了钞脂,實際并沒有支付,導致該庫存被鎖定笙僚,實際又沒有完成支付芳肌。是的,確實是存在該問題,無論采用支付后減庫存還是下單后減庫存肋层,不能百分百的解決該問題亿笤,只是將風險,問題降低栋猖。更好的服務于用戶净薛。因為,前文已經說了蒲拉,本質的問題其實還是存在肃拜。
以上分析庫存問題僅僅是一個庫存,在一個商戶上進行交易雌团,實際場景要比這復雜的多燃领,例如我是一家連鎖店:A商品,總庫存是10000件锦援,在某寶上有多家商店猛蔽,存在庫存調度,共用一個庫存的問題,庫存調度曼库,分配区岗,設計方式有很多種,例如方案一:可以采用一個總庫存毁枯,分庫存的方案慈缔,總分結構,對庫存進行調度种玛,方案二:可以采用各個庫存是獨立的藐鹤,數(shù)據(jù)調度,蒂誉,方案三可以采用層級機構教藻,有一級,二級右锨,三級這種多層級結構去設計庫存管理括堤。這要根據(jù)實際情況去分析該問題。
感謝看官的閱讀绍移,如果有錯歡迎指正悄窃。下一篇計劃講解:單點登錄設計模式