电商系统的库存管理
涉及實體貨物的電商系統(tǒng)均需要進行庫存管理。
一般來講,庫存管理的核心基礎(chǔ)為減少或避免超售(取決于貨物的價值以及稀缺程度),更高階的庫存管理相關(guān)需求可能涉及到發(fā)貨時效、倉位自動分配、多倉均衡、物流成本等方面。
一、 庫存交互的幾種場景
以下幾種場景涉及對庫存進行操作:
- 采購/進貨/生產(chǎn)
- 銷售/預(yù)售
- 退貨/換貨
- 盤點
- 調(diào)貨
以上操作可能會有并發(fā)場景,所以在設(shè)計相關(guān)數(shù)據(jù)庫操作時要特別考慮安全的鎖操作。
二、 庫存的三個層級
為了區(qū)分幾大不同場景的庫存操作,通常將庫存分為銷售層、調(diào)度層、倉庫層三種。
2.1 銷售層庫存
銷售層庫存主要關(guān)注面向終端顧客的庫存變動及配置,通常有以下幾個概念:
- 可用庫存:當前可以售賣的庫存;
- 訂單保留庫存:當訂單尚未正式付款生成時,為此單按照一定時限保留的庫存,訂單超時取消時隨之釋放;
- 已售庫存:已經(jīng)生成了正式訂單的庫存;
- 活動庫存:大型促銷活動時為了保證活動的庫存準確性以及獨立性,通常會單獨為活動設(shè)立一個專屬庫位,稱為活動庫存;
- 虛擬庫存/預(yù)售庫存:當商品暫未擁有現(xiàn)貨時,可以設(shè)立虛擬庫存來安排預(yù)售活動;
- 安全庫存/鎖定庫存:針對某些特殊的庫位(例如與實體門店共享庫存的庫位),可以設(shè)立安全庫存來避免某一渠道將庫存全部售空,觸及安全庫存以后的銷售需要經(jīng)過審核流程方可流轉(zhuǎn);
2.2 調(diào)度層庫存
調(diào)度層庫存更多關(guān)注于倉庫-訂單之間以及倉庫-倉庫之間的庫存分配及流轉(zhuǎn),通常有以下概念:
- 賬面庫存:倉庫中實際擁有的庫存總量;
- 可用庫存:可以用來滿足顧客訂單或者轉(zhuǎn)貨單的庫存數(shù)量;
- 在途庫存:工廠已生產(chǎn),或已從外部采購,但尚未抵達倉庫的庫存,或倉庫之間轉(zhuǎn)貨操作中在途的庫存;
- 不可售庫存:由于質(zhì)量或其它原因不可用來對外售賣的庫存;
- 已用庫存:已經(jīng)被分配到具體銷售單上的庫存;
2.3 倉庫層庫存
倉庫層庫存是以倉庫為單位進行庫存管理:
- 可用庫存:本倉庫可以用來立即滿足OMS下發(fā)訂單的庫存;
- 已占用庫存:本倉庫已經(jīng)被顧客訂單或者轉(zhuǎn)貨單占用的庫存;
- 不可用庫存:由于質(zhì)量問題或者是顧客退貨訂單退回的,尚未準備好再次銷售的庫存;
- 已出庫庫存:已經(jīng)交由快遞/物流并且成功出庫的庫存;
三、 庫存的流動同步及更新
庫存一般有兩個流動方向,從顧客終端流向倉庫,或從倉庫反向流到電商前端。前者為正常銷售情況下的扣減,后者則為轉(zhuǎn)貨、進貨后向前端系統(tǒng)推送可用庫存的流動。
由于現(xiàn)代的電商管理系統(tǒng)常常涉及多種不同組件(例如前端頁面、前端CMS、訂單處理中臺、OMS、SAP、WMS等等),庫存的同步更新需要妥善處理好多系統(tǒng)之間的同步問題,否則很容易出現(xiàn)超賣的情況。
通常庫存更新及流動的架構(gòu)會采取分布式事務(wù)以確保各個系統(tǒng)的同時更新與同步。目前主流的消息隊列解決方案基本都可以確保終端一致性來達成庫存消息的有序流動以及同步更新。
另外對于一些實時性要求不太高的庫存場景也可以使用異步二次確認的方式來確保一致性。
后續(xù)待有空繼續(xù)更新。
總結(jié)
- 上一篇: Python笔记 之 矩阵元素选取
- 下一篇: 王道操作系统考研笔记——2.1.9 调度