日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

庫(kù)存管理系統(tǒng)設(shè)計(jì)方案:從臺(tái)賬、流水到并發(fā)控制的實(shí)戰(zhàn)指南

庫(kù)存管理系統(tǒng)設(shè)計(jì)方案:從臺(tái)賬、流水到并發(fā)控制的實(shí)戰(zhàn)指南 簡(jiǎn)介這份《庫(kù)存管理系統(tǒng)設(shè)計(jì)方案》是一份面向管理信息系統(tǒng)初學(xué)者、相關(guān)專業(yè)學(xué)生及企業(yè)信息化人員的完整設(shè)計(jì)方案文檔。內(nèi)容圍繞庫(kù)存管理系統(tǒng)的建設(shè)展開(kāi)從MIS基本概念、研究背景與意義入手系統(tǒng)梳理了數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)與SQL語(yǔ)言應(yīng)用并以Visual Basic搭配Access 2000為開(kāi)發(fā)工具詳細(xì)說(shuō)明了需求分析、模塊劃分、數(shù)據(jù)庫(kù)設(shè)計(jì)與程序結(jié)構(gòu)等環(huán)節(jié)。通過(guò)入庫(kù)、出庫(kù)、庫(kù)存查詢、庫(kù)存預(yù)警等功能模塊展示了如何實(shí)現(xiàn)數(shù)據(jù)一致性強(qiáng)、安全性較高的庫(kù)存管理應(yīng)用系統(tǒng)。資源為1個(gè)doc文檔壓縮包大小約604KB篇幅完整、結(jié)構(gòu)清晰其中包含需求分析、模塊劃分、數(shù)據(jù)庫(kù)設(shè)計(jì)、程序結(jié)構(gòu)及源代碼等章節(jié)適合用于課程設(shè)計(jì)參考、畢業(yè)設(shè)計(jì)選題或企業(yè)庫(kù)存管理系統(tǒng)的早期方案借鑒。已有126人學(xué)習(xí)下載具備一定的參考價(jià)值。1. 庫(kù)存管理系統(tǒng)設(shè)計(jì)方案賬面庫(kù)存不等于可用庫(kù)存的落差某電商團(tuán)隊(duì)的新系統(tǒng)上線第三周前臺(tái)仍然顯示“有貨”倉(cāng)庫(kù)里卻已經(jīng)空了。后臺(tái)工程師核對(duì)數(shù)據(jù)后發(fā)現(xiàn)系統(tǒng)里的“庫(kù)存”做得就像一個(gè)計(jì)數(shù)器入庫(kù)加、出庫(kù)減減到負(fù)數(shù)也不管盤(pán)點(diǎn)差異全靠人肉改數(shù)。這個(gè)場(chǎng)景不是在講某個(gè)開(kāi)源項(xiàng)目而是在講「庫(kù)存管理系統(tǒng)設(shè)計(jì)方案」這個(gè)文檔到底該覆蓋什么。一套能用的方案核心不是把增刪改查寫(xiě)完而是要定義清楚四件事庫(kù)存賬長(zhǎng)什么樣、每筆變動(dòng)從哪來(lái)、并發(fā)下怎么保證不超賣、盤(pán)點(diǎn)對(duì)不上賬時(shí)怎么處置。這篇筆記就按這個(gè)順序展開(kāi)適合準(zhǔn)備從零搭建庫(kù)存系統(tǒng)或正在重構(gòu)老庫(kù)存模塊的工程師。方案里不引入微服務(wù)、不堆中間件全部基于一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就能落地。2. 先把架子搭對(duì)模塊邊界、數(shù)據(jù)流向與單據(jù)先行2.1 六個(gè)核心模塊劃分庫(kù)存臺(tái)賬是唯一事實(shí)源我把一個(gè)標(biāo)準(zhǔn)庫(kù)存管理系統(tǒng)拆成六個(gè)模塊商品中心、倉(cāng)庫(kù)中心、單據(jù)中心、庫(kù)存臺(tái)賬、庫(kù)存流水、對(duì)賬與預(yù)警。商品中心管 SKU 與計(jì)量單位倉(cāng)庫(kù)中心管倉(cāng)庫(kù)、庫(kù)位、庫(kù)區(qū)狀態(tài)單據(jù)中心管所有庫(kù)存變動(dòng)的來(lái)源包括采購(gòu)入庫(kù)單、銷售出庫(kù)單、盤(pán)點(diǎn)單、調(diào)撥單、調(diào)整單臺(tái)賬管實(shí)時(shí)余量流水管每一筆變動(dòng)軌跡對(duì)賬與預(yù)警做每日勾稽和異常提醒。這個(gè)劃分里最關(guān)鍵的一條紅線是庫(kù)存臺(tái)賬是全系統(tǒng)唯一的“事實(shí)源”任何時(shí)候要回答“現(xiàn)在有多少貨”只看臺(tái)賬表不看單據(jù)匯總不算歷史加減。很多系統(tǒng)翻車就是因?yàn)椴煌K各算各的賬采購(gòu)模塊問(wèn)采購(gòu)數(shù)、銷售模塊問(wèn)可賣數(shù)兩邊數(shù)據(jù)不一致最后線上超賣、倉(cāng)庫(kù)空轉(zhuǎn)。臺(tái)賬獨(dú)立出來(lái)的好處是所有模塊共用同一份數(shù)據(jù)任何模塊要改庫(kù)存必須先寫(xiě)單據(jù)再由單據(jù)去驅(qū)動(dòng)臺(tái)賬變化。我一般還會(huì)在倉(cāng)庫(kù)中心里給庫(kù)位加一個(gè)狀態(tài)字段標(biāo)記“正?!薄皟鼋Y(jié)”“盤(pán)點(diǎn)中”。這個(gè)字段看著不起眼但在后面處理盤(pán)點(diǎn)凍結(jié)和庫(kù)位隔離時(shí)會(huì)省掉大量麻煩。如果你要接倉(cāng)儲(chǔ)作業(yè)WMS這個(gè)模塊可以直接擴(kuò)展成庫(kù)位級(jí)的上架、揀貨、復(fù)核不需要改臺(tái)賬結(jié)構(gòu)。2.2 數(shù)據(jù)流向與單據(jù)驅(qū)動(dòng)先有單據(jù)、后有庫(kù)存變動(dòng)單據(jù)驅(qū)動(dòng)是這套方案的第二個(gè)紅線。簡(jiǎn)單說(shuō)不允許任何代碼路徑直接對(duì) inventory_balance 做 UPDATE 或 INSERT所有庫(kù)存變動(dòng)必須經(jīng)過(guò)“單據(jù)審核 → 臺(tái)賬變動(dòng) → 流水記錄 → 單據(jù)完成”這條鏈路。我設(shè)計(jì)單據(jù)狀態(tài)時(shí)只保留四個(gè)狀態(tài)草稿、已審核、已完成、已作廢。草稿是錄入階段不影響庫(kù)存已審核代表單據(jù)業(yè)務(wù)上已生效但還沒(méi)扣減庫(kù)存已完成代表庫(kù)存事務(wù)已經(jīng)成功提交已作廢用于反操作。日常最容易踩的坑是客服說(shuō)訂單取消開(kāi)發(fā)為了省事直接寫(xiě)一條 UPDATE 把庫(kù)存加回去。這個(gè)操作當(dāng)時(shí)沒(méi)問(wèn)題但月底對(duì)賬時(shí)流水里找不到這筆回補(bǔ)賬就永遠(yuǎn)對(duì)不平了。正確的反操作流程是原銷售出庫(kù)單作廢生成一張紅字沖銷單沖銷單審核后走一次庫(kù)存增加流水里留下“SALES_RETURN / 銷售退貨”類型的記錄。這樣一來(lái)臺(tái)賬、流水、單據(jù)三者始終能對(duì)上對(duì)賬腳本只需要檢查“臺(tái)賬期末 臺(tái)賬期初 流水發(fā)生額”就夠了不用猜測(cè)某一筆數(shù)據(jù)是人肉改的。2.3 技術(shù)選型參考從單庫(kù)到可擴(kuò)展的折中方案技術(shù)選型不用追求新潮庫(kù)存系統(tǒng)對(duì)一致性要求遠(yuǎn)高于對(duì)性能的要求。第一版建議用一個(gè)支持事務(wù)的關(guān)系型數(shù)據(jù)庫(kù)比如 MySQL 或 PostgreSQL單實(shí)例部署臺(tái)賬和流水放同一個(gè)庫(kù)。緩存只用來(lái)做熱點(diǎn) SKU 的查詢加速不參與扣減扣減永遠(yuǎn)回源到數(shù)據(jù)庫(kù)。我整理了這樣一張選型參考表層選型理由數(shù)據(jù)庫(kù)MySQL/PostgreSQL事務(wù)保證行鎖與樂(lè)觀鎖成熟緩存Redis只緩存查詢結(jié)果不作為扣減依據(jù)應(yīng)用層任選后端語(yǔ)言事務(wù)邊界由代碼控制語(yǔ)言無(wú)關(guān)分庫(kù)分表暫不做單庫(kù)可以支撐絕大多數(shù)中小業(yè)務(wù)量為什么我不建議第一版就上分庫(kù)分表因?yàn)閹?kù)存表按 SKU 維度存儲(chǔ)熱點(diǎn)行其實(shí)很集中分庫(kù)后跨庫(kù)事務(wù)會(huì)讓“扣減流水單據(jù)完成”的一致性變得非常難做。真到單庫(kù)扛不住的時(shí)候優(yōu)先把流水表按月分區(qū)或歸檔臺(tái)賬表依然單庫(kù)單表這樣能撐更久。記住一個(gè)原則庫(kù)存方案先求對(duì)再求快性能問(wèn)題可以用緩存擋一致性問(wèn)題擋不住。3. 庫(kù)存核心表設(shè)計(jì)表建對(duì)了一半的坑就消失了3.1 庫(kù)存余額表把維度和數(shù)量約束立住庫(kù)存余額表的粒度是“倉(cāng)庫(kù) 庫(kù)位 SKU”這張表只存當(dāng)前實(shí)時(shí)數(shù)量不存歷史。字段上我會(huì)拆出三個(gè)數(shù)量字段quantity 表示賬面總庫(kù)存locked_quantity 表示已被訂單預(yù)占的數(shù)量?jī)烧呦鄿p就是可賣庫(kù)存。不把可賣庫(kù)存單獨(dú)冗余成一個(gè)字段是為了避免出現(xiàn)“總量對(duì)、可賣不對(duì)”的臟數(shù)據(jù)。我一般這樣建表CREATE TABLE inventory_balance ( id BIGINT PRIMARY KEY AUTO_INCREMENT, warehouse_id BIGINT NOT NULL COMMENT 倉(cāng)庫(kù)ID, location_id BIGINT NOT NULL COMMENT 庫(kù)位ID, sku_id BIGINT NOT NULL COMMENT 商品SKU ID, quantity INT NOT NULL DEFAULT 0 COMMENT 賬面庫(kù)存總量, locked_quantity INT NOT NULL DEFAULT 0 COMMENT 預(yù)占鎖定數(shù)量, version INT NOT NULL DEFAULT 0 COMMENT 樂(lè)觀鎖版本號(hào), created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_wh_loc_sku (warehouse_id, location_id, sku_id), CONSTRAINT chk_quantity CHECK (quantity 0), CONSTRAINT chk_locked CHECK (locked_quantity 0 AND locked_quantity quantity) ) COMMENT 庫(kù)存余額表;注意兩個(gè)約束quantity 必須大于等于 0locked_quantity 必須小于等于 quantity。這兩個(gè)約束是防超賣的最后一道閘門(mén)。但要特別提醒MySQL 5.7 及以下對(duì) CHECK 約束是解析通過(guò)但不強(qiáng)制執(zhí)行的實(shí)際生效得靠應(yīng)用層事務(wù)里的條件更新。如果你用的版本不支持 CHECK一定要在扣減 SQL 的 WHERE 條件里帶上數(shù)量判斷而不能只依賴代碼里的 if。唯一索引 uk_wh_loc_sku 保證同一倉(cāng)庫(kù)同一庫(kù)位同一 SKU 只有一行。這樣做的直接好處是扣減時(shí)可以用行鎖鎖定這一行不會(huì)因?yàn)椴l(fā)插入產(chǎn)生多條記錄。如果你把庫(kù)位維度去掉直接按“倉(cāng)庫(kù) SKU”建表會(huì)讓很多庫(kù)位管理、盤(pán)點(diǎn)凍結(jié)的功能做不深入。建議一開(kāi)始就帶上庫(kù)位哪怕當(dāng)前用不到。3.2 庫(kù)存流水表每一筆變動(dòng)都要能回放流水表是庫(kù)存系統(tǒng)的黑匣子它的價(jià)值在出問(wèn)題時(shí)才體現(xiàn)出來(lái)。我設(shè)計(jì)的流水表不只記錄“增加了多少、減少了多少”還把變動(dòng)前數(shù)量、變動(dòng)后數(shù)量、來(lái)源單據(jù)號(hào)、變動(dòng)類型都存下來(lái)。這樣任何一筆可疑變動(dòng)都可以直接回放出來(lái)不需要翻業(yè)務(wù)日志。CREATE TABLE inventory_flow ( id BIGINT PRIMARY KEY AUTO_INCREMENT, flow_no VARCHAR(32) NOT NULL COMMENT 流水號(hào), doc_type VARCHAR(32) NOT NULL COMMENT 單據(jù)類型PO/SO/RETURN/ALLOCATE/CHECK/ADJUST, doc_no VARCHAR(32) NOT NULL COMMENT 來(lái)源單據(jù)號(hào), change_type VARCHAR(32) NOT NULL COMMENT 變動(dòng)類型IN/OUT/LOCK/UNLOCK/CHECK_IN/CHECK_OUT, sku_id BIGINT NOT NULL COMMENT 商品SKU ID, warehouse_id BIGINT NOT NULL COMMENT 倉(cāng)庫(kù)ID, location_id BIGINT NOT NULL COMMENT 庫(kù)位ID, before_qty INT NOT NULL COMMENT 變動(dòng)前賬面總量, change_qty INT NOT NULL COMMENT 變動(dòng)量正數(shù)增加負(fù)數(shù)減少, after_qty INT NOT NULL COMMENT 變動(dòng)后賬面總量, operator VARCHAR(32) NOT NULL COMMENT 操作人, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_doc (doc_type, doc_no), KEY idx_sku_time (sku_id, created_at) ) COMMENT 庫(kù)存流水表;關(guān)鍵點(diǎn)是 before_qty 和 after_qty 不能省。只存 change_qty 的話某天數(shù)據(jù)出問(wèn)題想確認(rèn)“當(dāng)時(shí)是不是真的從 50 變成了 10”還得靠猜。有了前后值對(duì)賬時(shí)可以精確檢查每一步加減是否符合預(yù)期。流水表不需要唯一鍵約束流水號(hào)但生產(chǎn)環(huán)境我會(huì)給 flow_no 加一個(gè)唯一索引防止重復(fù)寫(xiě)入。流水表會(huì)漲得很快建議定期歸檔。做法是按 created_at 做月度分區(qū)三個(gè)月前的分區(qū)數(shù)據(jù)遷到歷史庫(kù)。日常查詢盡量都帶 sku_id 和 created_at 范圍避免全表掃描拖垮主庫(kù)。記住流水表永遠(yuǎn)只追加不 UPDATE、不 DELETE這是審計(jì)的基本前提。3.3 鎖與并發(fā)樂(lè)觀鎖選型與悲觀鎖的邊界庫(kù)存系統(tǒng)并發(fā)扣減是逃不開(kāi)的問(wèn)題。我的默認(rèn)方案是樂(lè)觀鎖加版本號(hào)寫(xiě) SQL 時(shí)把版本號(hào)作為 WHERE 條件一條 UPDATE 同時(shí)完成“判斷數(shù)量、扣減、版本號(hào)自增”。這樣做的好處是不用顯式開(kāi)啟事務(wù)去鎖行性能好。UPDATE inventory_balance SET quantity quantity - 1, version version 1 WHERE id 123 AND quantity 1 AND version 5;這條 SQL 影響行數(shù)為 1 說(shuō)明扣減成功為 0 說(shuō)明版本沖突或庫(kù)存不足應(yīng)用層捕獲后重新查詢?cè)僦卦?。參?shù)上要注意兩點(diǎn)第一個(gè)是 version 必須用舊值去匹配不能寫(xiě)成 version 5否則重試就沒(méi)有意義第二個(gè)是 quantity 1 這個(gè)條件不能省它是并發(fā)下防超賣的關(guān)鍵。樂(lè)觀鎖的缺點(diǎn)是當(dāng)同一個(gè)熱門(mén) SKU 并發(fā)非常高時(shí)大部分請(qǐng)求都會(huì)因?yàn)榘姹緵_突失敗重試反而放大數(shù)據(jù)庫(kù)壓力。我一般以單 SKU 每秒幾十筆以上的扣減量為分界線超過(guò)這個(gè)量就換成悲觀鎖用 SELECT ... FOR UPDATE 鎖住那一行讓請(qǐng)求排隊(duì)處理。對(duì)大多數(shù)業(yè)務(wù)來(lái)說(shuō)樂(lè)觀鎖完全夠用沒(méi)必要一上來(lái)就上悲觀鎖。還有一個(gè)折中做法把熱門(mén) SKU 的庫(kù)存拆分到多個(gè)庫(kù)存行比如 1000 件拆成 10 行每行 100 件扣減時(shí)隨機(jī)選行從設(shè)計(jì)上降低沖突概率。這個(gè)方案帶來(lái)一個(gè)新問(wèn)題——盤(pán)點(diǎn)時(shí)要把多行合并所以我只在活動(dòng)大促場(chǎng)景臨時(shí)用日常不拆。4. 入庫(kù)、出庫(kù)與盤(pán)點(diǎn)三大流程的狀態(tài)機(jī)落地4.1 入庫(kù)流程采購(gòu)入庫(kù)與退貨入庫(kù)的兩種沖銷邏輯入庫(kù)不只是“加庫(kù)存”。采購(gòu)入庫(kù)增加的是可賣庫(kù)存而銷售退貨入庫(kù)要區(qū)分“還能不能賣”能賣的進(jìn)正常庫(kù)存不能賣的進(jìn)次品庫(kù)位。我用一張庫(kù)存調(diào)整單來(lái)承載這些差異而不是直接改臺(tái)賬。采購(gòu)入庫(kù)的流程是采購(gòu)單審核后生成入庫(kù)單倉(cāng)庫(kù)掃碼確認(rèn)后在一個(gè)事務(wù)里更新臺(tái)賬、寫(xiě)流水、置單據(jù)完成。def confirm_purchase_in(doc_no, items): with db.transaction(): doc get_doc(doc_no) if doc.status ! APPROVED: raise BizException(單據(jù)未審核不能入庫(kù)) for item in items: # 更新臺(tái)賬不存在則插入新行存在則累加 updated db.execute( UPDATE inventory_balance SET quantity quantity %s, version version 1 WHERE warehouse_id %s AND location_id %s AND sku_id %s, (item.qty, item.warehouse_id, item.location_id, item.sku_id) ) if updated 0: insert_balance(item) # 寫(xiě)流水 insert_flow(doc_typePO, doc_nodoc_no, change_typeIN, change_qtyitem.qty) # 最后才把單據(jù)置為完成 update_doc_status(doc_no, DONE)這里的事務(wù)邊界要特別注意先判斷單據(jù)狀態(tài)、再更新臺(tái)賬、再寫(xiě)流水、最后更新單據(jù)狀態(tài)四步必須在同一個(gè)事務(wù)里。如果在更新完臺(tái)賬之后事務(wù)還沒(méi)提交服務(wù)就重啟了回滾會(huì)把臺(tái)賬和數(shù)據(jù)恢復(fù)到一致?tīng)顟B(tài)不會(huì)出現(xiàn)“流水有了、臺(tái)賬沒(méi)變”的中間臟數(shù)據(jù)。insert_balance 的時(shí)候要注意唯一鍵沖突并發(fā)下第一筆插入和第二筆更新可能同時(shí)發(fā)生穩(wěn)妥做法是捕獲唯一鍵沖突后轉(zhuǎn)成 UPDATE或者直接使用 INSERT ... ON DUPLICATE KEY UPDATE。4.2 出庫(kù)流程預(yù)占、扣減、回滾出庫(kù)是庫(kù)存系統(tǒng)里最考驗(yàn)設(shè)計(jì)的一環(huán)。我堅(jiān)持“預(yù)占與扣減分離”下單成功后鎖定庫(kù)存訂單發(fā)貨后才真正扣減。預(yù)占階段把可賣數(shù)量轉(zhuǎn)成鎖定數(shù)量可賣數(shù)量減少但總庫(kù)存不變扣減階段把總庫(kù)存和鎖定數(shù)量一起減少。這樣既防止超賣又允許訂單取消時(shí)釋放預(yù)占。-- 預(yù)占可賣數(shù)量 quantity - locked_quantity必須足夠 UPDATE inventory_balance SET locked_quantity locked_quantity %s, version version 1 WHERE warehouse_id %s AND location_id %s AND sku_id %s AND quantity - locked_quantity %s;這條 SQL 是防超賣的核心影響行數(shù)為 1 代表預(yù)占成功為 0 代表庫(kù)存不足。參數(shù)里那個(gè) quantity - locked_quantity %s 是原子判斷必須在一條 SQL 里完成不能先查出來(lái)再在應(yīng)用層判斷否則高并發(fā)下兩個(gè)請(qǐng)求同時(shí)查到“還剩 10 件”各自扣 8 件最后就超賣了。預(yù)占成功后寫(xiě)一條 LOCK 類型的流水訂單號(hào)記錄在 doc_no 里方便后續(xù)釋放。扣減階段則在一個(gè)事務(wù)里完成總庫(kù)存減少、鎖定數(shù)量減少、寫(xiě) OUT 流水、更新發(fā)貨單狀態(tài)。如果訂單走到發(fā)貨前被取消要新建一張作廢單把 locked_quantity 減回去寫(xiě)一條 UNLOCK 流水。這里最容易做錯(cuò)的是取消訂單時(shí)只減 locked_quantity 不減 quantity導(dǎo)致總庫(kù)存虛高。記住鎖定時(shí)不動(dòng) quantity扣減時(shí)同時(shí)動(dòng) quantity 和 locked_quantity釋放時(shí)只動(dòng) locked_quantity三者各有語(yǔ)義混了賬就亂了。4.3 盤(pán)點(diǎn)流程凍結(jié)、實(shí)盤(pán)、差異調(diào)整盤(pán)點(diǎn)不能“邊賣邊數(shù)”否則數(shù)出來(lái)的結(jié)果毫無(wú)意義。我的做法是三步走盤(pán)點(diǎn)前凍結(jié)庫(kù)位或 SKU 范圍盤(pán)點(diǎn)時(shí)錄入實(shí)盤(pán)數(shù)量盤(pán)點(diǎn)完成后生成盤(pán)盈盤(pán)虧調(diào)整單。凍結(jié)的本質(zhì)是限制業(yè)務(wù)單據(jù)對(duì)凍結(jié)范圍內(nèi)庫(kù)存的操作出庫(kù)單和調(diào)撥單在凍結(jié)期間不允許審核通過(guò)。-- 盤(pán)點(diǎn)差異計(jì)算賬面數(shù) vs 實(shí)盤(pán)數(shù) SELECT b.quantity AS book_qty, c.count_qty AS counted_qty, c.count_qty - b.quantity AS diff_qty FROM inventory_balance b JOIN check_snapshot c ON b.sku_id c.sku_id AND b.location_id c.location_id WHERE c.check_id %s AND c.count_qty ! b.quantity;盤(pán)點(diǎn)結(jié)果不會(huì)直接改動(dòng) inventory_balance而是生成盤(pán)盈盤(pán)虧調(diào)整單。盤(pán)盈走 IN 類型的調(diào)整盤(pán)虧走 OUT 類型的調(diào)整兩張單據(jù)都必須寫(xiě)明原因比如“倉(cāng)庫(kù)盤(pán)點(diǎn)差異”“損耗”。這樣臺(tái)賬變動(dòng)永遠(yuǎn)有單據(jù)支撐盤(pán)點(diǎn)對(duì)賬才能閉環(huán)。我在 check_snapshot 表里會(huì)保存盤(pán)點(diǎn)時(shí)點(diǎn)的賬面快照而不是直接關(guān)聯(lián)當(dāng)前余量表防止盤(pán)點(diǎn)期間余量變化導(dǎo)致差異算不準(zhǔn)。提示盤(pán)點(diǎn)期間如果業(yè)務(wù)不允許凍結(jié)太長(zhǎng)時(shí)間至少要在生成盤(pán)點(diǎn)單時(shí)記錄賬面快照并在盤(pán)點(diǎn)確認(rèn)前校驗(yàn)該范圍是否發(fā)生過(guò)出入庫(kù)流水發(fā)生過(guò)的一律強(qiáng)制重盤(pán)不要直接按實(shí)盤(pán)數(shù)覆蓋。5. 庫(kù)存翻車現(xiàn)場(chǎng)盤(pán)點(diǎn)和并發(fā)下的五個(gè)典型坑及排查路徑5.1 負(fù)庫(kù)存數(shù)據(jù)庫(kù) check 約束沒(méi)攔住現(xiàn)象某 SKU 賬面數(shù)量變成 -3訂單依然在正常發(fā)出財(cái)務(wù)對(duì)賬發(fā)現(xiàn)庫(kù)存金額是負(fù)數(shù)。原因數(shù)據(jù)庫(kù)版本不強(qiáng)制校驗(yàn) CHECK 約束應(yīng)用層判斷庫(kù)存足夠的邏輯在并發(fā)下同時(shí)通過(guò)兩條扣減同時(shí)執(zhí)行就把數(shù)量扣成了負(fù)數(shù)。解決把數(shù)量判斷下沉到 UPDATE 語(yǔ)句的 WHERE 條件里用一條 SQL 原子完成“查庫(kù)存、扣數(shù)量”。同時(shí)加一個(gè)定時(shí)任務(wù)每天掃描 inventory_balance 里 quantity 小于 0 的記錄第一時(shí)間報(bào)警。不要指望開(kāi)發(fā)人員在所有代碼路徑上都記得加判斷數(shù)據(jù)庫(kù)和 SQL 層的約束才是最后一道閘門(mén)。5.2 盤(pán)點(diǎn)期間照常出庫(kù)賬面庫(kù)存被覆蓋現(xiàn)象倉(cāng)庫(kù)盤(pán)點(diǎn)一個(gè)庫(kù)位花了三個(gè)小時(shí)盤(pán)點(diǎn)確認(rèn)后差異異常大重盤(pán)兩次數(shù)據(jù)還是對(duì)不上。原因盤(pán)點(diǎn)單生成后業(yè)務(wù)仍然在這個(gè)庫(kù)位正常出庫(kù)到確認(rèn)盤(pán)點(diǎn)結(jié)果時(shí)系統(tǒng)直接把臺(tái)賬數(shù)量改成實(shí)盤(pán)數(shù)期間出庫(kù)的數(shù)量被覆蓋了。賬面、流水、實(shí)盤(pán)三者已經(jīng)不一致之后怎么對(duì)都對(duì)不平。解決盤(pán)點(diǎn)單審核時(shí)嚴(yán)格凍結(jié)庫(kù)位凍結(jié)范圍內(nèi)不允許出庫(kù)和調(diào)撥如果凍結(jié)會(huì)影響業(yè)務(wù)那就退而求其次在盤(pán)點(diǎn)確認(rèn)前檢查凍結(jié)時(shí)間內(nèi)該范圍有沒(méi)有新增流水有流水的 SKU 自動(dòng)剔除強(qiáng)制重新盤(pán)點(diǎn)。這一步必須做成系統(tǒng)邏輯不能靠倉(cāng)庫(kù)主管口頭協(xié)調(diào)。5.3 樂(lè)觀鎖版本號(hào)更新放錯(cuò)位置重試邏輯白寫(xiě)現(xiàn)象加了 version 字段后并發(fā)扣減偶爾會(huì)丟更新重試機(jī)制一直沒(méi)有生效。原因應(yīng)用層把版本號(hào)比較和更新拆成了兩步第一步查出 version5第二步執(zhí)行UPDATE ... SET quantityquantity-1 WHERE id123完全沒(méi)帶版本號(hào)條件或者帶了條件但 SET 里沒(méi)有 versionversion1。這等于樂(lè)觀鎖形同虛設(shè)。解決版本號(hào)更新必須和業(yè)務(wù)字段更新放在同一條 SQL 里即UPDATE ... SET quantity quantity - %s, version version 1 WHERE id %s AND version %s。重試邏輯要捕獲“影響行數(shù)為 0”的結(jié)果重新查詢最新版本號(hào)后再次執(zhí)行。還有一個(gè)容易忽略的細(xì)節(jié)重試之后業(yè)務(wù)邏輯要整體重新計(jì)算不能只換版本號(hào)、庫(kù)存數(shù)量還按舊值算。5.4 調(diào)撥或移庫(kù)時(shí)兩步更新不在一個(gè)事務(wù)現(xiàn)象調(diào)撥單顯示已完成但兩個(gè)倉(cāng)庫(kù)的庫(kù)存都變少了或者一個(gè)多了另一個(gè)沒(méi)少月底一查全是這種半截賬。原因跨倉(cāng)調(diào)撥被實(shí)現(xiàn)成“出庫(kù)倉(cāng)減庫(kù)存、入庫(kù)倉(cāng)加庫(kù)存”兩條獨(dú)立 UPDATE第一條成功了、第二條失敗事務(wù)沒(méi)有回滾。解決調(diào)撥單必須在一個(gè)數(shù)據(jù)庫(kù)事務(wù)里完成先減后加任一步失敗整體回滾。如果未來(lái)要跨庫(kù)調(diào)撥需要引入分布式事務(wù)或本地消息表但在單庫(kù)階段直接一個(gè)事務(wù)包住兩步更新就是最可靠的做法。排查時(shí)優(yōu)先看 inventory_flow 里 ALLOCATE 相關(guān)的流水兩邊單據(jù)號(hào)應(yīng)該成對(duì)出現(xiàn)。5.5 直接更新臺(tái)賬修數(shù)據(jù)流水成了擺設(shè)現(xiàn)象某天發(fā)現(xiàn)庫(kù)存不平開(kāi)發(fā)為了省事直接改了 inventory_balance 里的 quantity第二天對(duì)賬腳本跑出大量差異。原因臺(tái)賬被繞過(guò)流水里沒(méi)有對(duì)應(yīng)記錄庫(kù)存余額表變成了一個(gè)可以隨意篡改的數(shù)字對(duì)賬結(jié)果自然永遠(yuǎn)對(duì)不上。更麻煩的是時(shí)間一長(zhǎng)沒(méi)人記得哪些數(shù)據(jù)是手工改的整張表的數(shù)據(jù)可信度下降。解決任何庫(kù)存修正必須走庫(kù)存調(diào)整單調(diào)整單審核后在事務(wù)里更新臺(tái)賬、寫(xiě) ADJUST 流水。哪怕是初始化導(dǎo)入也要通過(guò)導(dǎo)入單完成??梢员A粢粋€(gè)“超級(jí)管理員”權(quán)限做數(shù)據(jù)修復(fù)但每一次修復(fù)都會(huì)留下流水和單據(jù)痕跡方便事后審計(jì)。我自己的習(xí)慣是工具可以寫(xiě)但工具生成的每一筆變更都必須有完整鏈路。6. 讓這套方案更抗打每日對(duì)賬、預(yù)警閾值與擴(kuò)展預(yù)留6.1 每日自動(dòng)對(duì)賬臺(tái)賬對(duì)流水、流水對(duì)單證對(duì)賬是庫(kù)存系統(tǒng)最樸素的護(hù)城河。我每天凌晨跑一遍賬把每行庫(kù)存的期初值加當(dāng)天流水發(fā)生額和期末值比對(duì)再把流水按 doc_no 匯總和單據(jù)表比對(duì)。任何一條對(duì)不上系統(tǒng)自動(dòng)生成差異記錄推給指定負(fù)責(zé)人。這個(gè)腳本不復(fù)雜但能兜住絕大多數(shù)人肉改數(shù)、漏單、重復(fù)扣減的問(wèn)題。6.2 預(yù)警閾值安全庫(kù)存與周轉(zhuǎn)提醒在 SKU 上配置 min_qty 和 max_qty低于最低值生成補(bǔ)貨建議高于最高值提示滯銷。閾值設(shè)置上我會(huì)結(jié)合最近三十天的日均銷量乘以采購(gòu)提前期來(lái)算而不是拍腦袋填一個(gè)固定數(shù)字。預(yù)警不在精在于穩(wěn)定觸發(fā)這樣運(yùn)營(yíng)才會(huì)認(rèn)真對(duì)待。6.3 擴(kuò)展預(yù)留批次、序列號(hào)與多計(jì)量單位方案里我刻意保留了擴(kuò)展位流水表已經(jīng)具備 doc_no 關(guān)聯(lián)能力未來(lái)加批次時(shí)只需要在 inventory_balance 和 inventory_flow 上增加 batch_no 字段按“倉(cāng)庫(kù) 庫(kù)位 SKU 批次”建唯一索引即可。序列號(hào)管理則需要單獨(dú)建一張表來(lái)記錄每個(gè)唯一碼的流轉(zhuǎn)狀態(tài)不放在臺(tái)賬里。多計(jì)量單位在商品中心處理庫(kù)存表始終以基礎(chǔ)計(jì)量單位記賬不做單位換算。這套方案我早期在某內(nèi)部系統(tǒng)里踩過(guò)一輪坑最大的教訓(xùn)就是庫(kù)存沒(méi)有玄學(xué)只有賬沒(méi)建對(duì)、順序沒(méi)走對(duì)、并發(fā)沒(méi)防對(duì)。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲伊人成综合成人网| 天美传媒av在线| 亚洲九九视频在线观看| 91在线美女| 久久一区二区三区入口| 国产精品原创巨作?v网站| 欧美论理片| 98一区二区精品| 艹少妇网站| 少妇久久| 性爱综合一区二区| 老熟女综合| 久久久久密臀视频| 美日韩一卡二卡三卡免费人妻精品| 嗯啊抽插大香蕉网页| 欧在线一二区| 99热这里都是精品| 久热精品在线| 人妻欧美| 97亚洲在线| 大香蕉手机在线| 91l欧美在线| 偷拍欧美激情| 久久综合九九| 伊人黄色视频免费观看| 偷拍三区| 国产精品美女在线一区| 久热久| 神马久久久久久伦理片| 日韩激情无码影院| 美女黄网| 97国产精品视频| 国产精品久久久久9999小说| 欧美 日韩第一性色| 黄网站黄视频网站进入口 | 99r九九| 日韩性爱网址| 91大学精品激情戏| 亚洲精品天天影视综合网 | 丝袜视频网国产90| 精品少妇一区二区三区| 欧美夜色| AV天天在线观看| 加勒比在线观看一区二区| 午夜福利合集| 日本三级黄页| 欧美操逼熟女| 免费簧片在线观看| 久久久久ab| 欧美se亚洲| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 久久久久久久强迫| 欧美影院一区二区三区| 老司机福利青青草| 在线一道啪| 熟女人妻一区二区三区| 爱射综合| 色色综合97| 国产欧美成人精品| 超碰99re| 亚洲精品国产专区在线观看| 性做久久久久久久| 婷婷色婷婷| 天天综合在线4| 天天插天天舔舔天天干| 在线小视频| 黑白配性爱AV成| 天天久久| A V视频日本| 蜜臀AV网站| 大香蕉色网| 九月AV| 亚洲天堂久| 97在线播放| 91精品老女人| 国产对白刺激视频| 日韩影片中文字幕一区二区三区| 久久骚少妇| 国产av又色又爽又黄| 亚洲精品中文字幕一区在线视频| 中文字幕二区日韩天堂| www被窝色com| 熟女乱伦二区| 色在线69堂| 欧美的精品的视频| 一个人免费HD91视频| 天美传媒国产原创中文字幕亚洲欧美另类 | 色欲蜜臀AV| 欧美第二页| caopeng97| 伊人久久亚洲中文字幕不卡| 黄色网址在线免费观看| 亚洲久久天堂| 人人人人插| 欧美黑人猛交春色影视大全| 欧美日韩美女精品久草一区二区三区 | 丰满的三级少妇欧美久久久| 在线观看视频91| 欧美日韩亚洲少妇寂寞影院正在播放 | 久久久爆乳翘臀一线天伦理视频| 欧美在线视频播放| 欧美日韩香蕉| 91天美传媒在线观看| 91精品网站| 91xingse| 992视频一区| 大香蕉在线视频重口味毛片在线| 久久一区,青青青青草视频在线播放| 加勒比av官网在线| 天天综合91在线| 亚洲城人男人的天堂| 色欧美在线| www.伪伪| SUV一区二区在线看| 激情小说亚洲| 亚洲天天艹| 超碰诱惑| 欧洲色色| 天天综合网在线观看| 国产超碰| 亚洲双插| 天美av在线观看| 超碰人人干天天射| 97碰在线视频| 男人的天堂日韩| 天天懆天天日| 天天日天天操VV| 久久久久亚洲熟妇熟女| 日韩成人色图| 欧美十八禁导航成人| 国产熟女精品区| 十八禁视频一区二区| 嗯嗯啊啊啊好舒服| 亚洲无码国产探花在线观看| 97一区二压| 草草影院最新网址| 97在线免费观看| 久久爱超碰网| 天天视频综合在线观看视频| 大香蕉日亚洲日本亚大 | 国产欧美另类久久久精品课程| 日韩乱伦视频| 国产视频第二页| 日本色婷婷| 欧美亚洲在线| 亚洲 图片 欧美 色图| 97爱爱| 精品亚洲俞拍视频一区| 日韩欧美aⅴ综合网站发布| 亚热日本熟女| 五十路二区在线| 日韩AV无码中文一区二区| 欧美特黄视频网站| ,国产乱人伦精品一区二区三区| 韩国一级做a久久久久| 97天天做| 高清无码国产亚洲| 成人a级高清视频在线观看| 啊啊啊啊啊好舒服视频| 999熟女精品| 91在线精品| 后入式999| 午夜福利久久久噜久噜久久综合 | 夜间福利片1000无码| 亚洲国产中文字幕| 香一区二区三区| 国产女人与拘做受视频免费| 丰满人妻一区二区三区| 欧美一区二区成人一卡| 色综合色综合网| 亚洲自拍偷拍视频在线 | 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 天天看少妇| 久久精品中文字幕无码l| 少妇九九九九| 日本东京热大香蕉a片| 91GD.COM| 天天精品| 第一高清av中文字幕| 精品久久久久久中文字幕视频免费| 精品无码人妻一区二区免费蜜桃| 亚洲天堂自拍| 女色视频社区| 91粉嫩萝控精品福利网站_精品影音先锋国 | 亚洲精品 欧美精品| 99在线无码精品秘 入口黑人| 久男人久久| 麻豆精品久久久久久久| 日本Xx性爱| 久久久久久九九九九| 91AV天美在线视频| 蜜桃久久久久久久久久久久| 蜜桃臀 后入 一区 二区 三区 在线| 精品高清一区二区三区三州| 边做饭边操逼逼| 人妻激情视频| 97av,com| 日韩黄色小说| 国产一区二区久久| 亚洲欧美setu| 亚洲男人的天堂AV| 亚洲美女30b| 97色插| 五月婷色| 亚洲,欧美,春色,另类| 日本一级真人黄色性爱视频| 国产中文字幕曰本毛片| 自拍偷拍草一草| 欧美在线91| 亚洲国产另类在线中文| 欧美成人免费在线观看| 97超碰色| 国产真实子伦对白| 久久的免费性爱视频| 人妻铁牛TV| 久久久亚洲精品中文字幕人妻| 国产精品69久久久久孕妇欧美| 成人熟女区| www.99视频| 91狠狠综合久久| 亚洲日本大香蕉1| 91青青在线视频| 日韩不卡一二三四| 人人澡人人澡人人| 综合色一区三区二区| 加勒比av网| 国产第12页| 亚洲人成网站7777| 为用户提供免费看黄网址在线观看| 欲香欲色| 成人网站 免费观看| 久久9免费视频| 围产精品一区二区三区视频播放| 无码免费精品高清| 成人夜夜| 另类图片五月| 按摩中文字幕| 午夜久久久| 亚州黄站| 欧美综合国产精品久久丁香| 免费超碰97在线观看| 免费a在线播放v| 91狠| 天天夜夜久久| 亚洲一级性爱视频免费看| 亚洲乱色视频一区、二区在线| 91麻豆天美国产| 女同性恋一区二区三区精品视频| 嗯嗯啊啊好疼| 素人伊尹大香蕉免费下载视频| 国产精品禁久久久精品| 极品白嫩美少妇在地板上位骑射淫水泛滥| 激情网色| 婷婷在线播放| 久久久久幕乱码| 亚洲美腿丝袜香蕉影视欧美成人| 日本韩国国产精品一区| av资源在线观看少妇| 天天干天天日天天射黄色| 日本不卡二三区| 伊人97| 少妇被c 黄 免费观看| 天天激情干| 大香蕉免费中文| 久操影视| 波多野结衣一级视频| 中文字幕 人妻不满 在线视频| 亚洲美女30b| 国产精品69久久久久久久| 男女啪啪啪18禁网站| 日本日皮视频逼| 91日日| 96国产精品| 老熟女乱子伦中文字幕一区二区| 五月丁香六月婷| 久久色AV线| 久久久久久电影| 嗯啊不要在线| 亚州综合网| 免费观看啪视频| 玖玖爱一区在线| 国产91 丝袜在线播放00-百度| 高清无码 国产精品| 欧美亚洲性爱一区二区| 亚洲不卡三级手机播放| 看日韩美女二区三区免费操逼视频| 久久高清无码夜夜操| 香伊人在线| 国产精品麻豆成人AV艾秋| 五月天AV资源| 日本在线播放不卡一区| 丰满欧美放荡少妇在线| 国产精品无码论坛| 青青草一区二区三区四| 国产无码一二三区| 精品无av| 久久久久无码| 精品无码欧美三级| 日本不卡二三区| 日欧操屄| 999九九精品| 黄色在线网站| 伊人在线大香蕉二。| 日本五十路熟女一区二区| 99精品伊人| 午夜超爽| 欧美 日韩第一性色| 日日夜夜噜| av日韩手机在线影视| 青青操在线亚洲视频观看欧美在线| 99999精品| 东京热激情视频一二三区| 久久这里只精品| 亚洲 国产 精品一区| 九热超碰| 啪啪综合网| 精品人妻一区二区三区四区| 看日韩美女二区三区免费操逼视频 | 中文字幕乱碼在线| 国产在线视频二区| 精品久久久久av影院| 色五月第四色| 精品人妻一区二区三区四区| 青草视频在线看看看看看看看看看| 日本大香蕉综合网红本杳社区| 婷婷五月影院| 97色网| 欧美综合97www| 99在线免费公开视频| 91日产欧美| 一块操欧美| 色香AV| 久久精品天美| 国产福利第一视频| 一级一性爱免费视频| 91夜色chaopeng| 激情网色| 日本一区二区亚洲综合| 国产欧美黑人丰满在线| 激情丁香五月婷婷| 欧美熟妇成人一区二区| 97久久精品不卡| 色嘟嘟人妻天堂网| 亚洲最新a在线观看| 大色网久久| 成人网欧美风情| 欧美一区二区观看在线| 久草午夜| 久久亚洲日韩国产欧| 操久久久久久| 性久久| 99在线精品视频| 裸体1区| 色九九九九久| 成人福利视频网| 牛牛AV人人夜夜澡人人爽| 日韩黄色小说| 精品国产国产AV| 日韩亚洲美州欧洲综三区一品在线| 自拍视频一区在线观看| 亚洲日韩人妻中文字幕一区| 三久久久四久久久久| 亚洲se电影| 国产亚洲色婷婷99精品91| 欧美久久九九| 久久九九综合| 五月丁香激情综合网| 性久久| 内射老妇BBWX0C0CK| 青青青青青手机视频| www久久精品| 91性| 久久夜精品一区二区三区| 啊啊啊操一区| 天天干少妇| 亚洲无码一区二区三区三州| 国产激情av女片自拍| 18啪啪手机免费性爱| 国产精品人妻无码久久久老鸭窝| 最新AV在线| 91亚洲黄色网| 国产精品农村妇女精品| 91一区二匹| 亚洲se91| 91亚洲电影| 日本媚薬中文字幕在线| 探花精品 一区二区| 九色黄站| 久久伊人最新网址视频| 亚洲欧美日韩制服另类| 蜜乳中文字幕a在线| 免费人成毛片乱码| 国产精品久久久久久照片| 蜜乳AV.COM| 日韩性爱1级片视频| 亚洲图片色图欧美另类| 欧美强奸乱能| 国产精品秘 福利姬在线观看| 男人天堂欧美| 婷婷色一区| 99在线免费视频| 99爱精品| 人妻加勒比东京热| 久久精品人体| 樱花草社区www中国| 久草色悠悠在线视频| 国产精品经典一卡久久久| 综合网~91综合网| AV天堂男人的天堂| 夜夜人妻爽| 超碰在线97国产| 我想要啊 啊 啊| 人人澡人人澡人人| 国产精品不卡少妇白| 欧美夜夜| 自拍偷拍亚洲熟女妇人精品| 午夜120视频在线观看| 成人亚欧免费视频| 综合五月天| 四虎精品亚洲| 国产午夜福利合集| 鸥美中出| 国产欧美精选激情视频| 成人av动漫在线观看| 超碰碰碰碰| 欧美 亚洲 大香| 免费视频无码| 国产二区三区粉嫩在线| 91痴汉| 国产区日韩区在线观看| 嫩草影院在线观看精品| 狠狠干综合| 久久伊人青青草| 亚洲区限制级 99| 91岛国动作片| 国产操伦| 欧插网站| 九九九九一级| 操逼操2| 亚洲精品人妻吞精av| 六月婷婷综合| 精品人妻一二三四区视频| 性综合网| 大香蕉丝袜一级片| 日韩999| 屌妞视频久久久久久久久久久久| 欧美综合亚洲| 国产日韩精品人妻久久久久色欲网站| 99精品久久| 国产丰满熟夫69mpp| 午夜毛片亚洲精品片国产久久久| 日韩综合成人免费视频| 日本在线不卡123| 欧美少妇色综合| 欧美影院一区二区三区| 国产精品成人在线| 久湿久久| 欧洲成人性爱视频| 91在线免费观看处女| 婷婷人妻激情| 国产一区二区三区影片| 91丝袜在线视频| 97综合日韩| 亚洲中亚日激情视频| 91精品人妻偷情| 淫荡少妇免费| 青青草在线视频人人想人人上| 国产欧美后入| 国产高清成人mv在线观看| 97人妻色| 欧色网址| 亚洲有码 视频一区| 中日韩久久久免费看| 中文字幕国产| 97超碰中文字幕| 青青草导航在线视频| 久久精品—区二区三区内射| 亚洲经典啪啪| 小电影欧美91| 性爱av网站| av线电影| 操逼逼福利视频| 国内外毛片在线观看| 中文字幕久热视频在线| 91麻豆天美国产| 午夜乱轮操逼视频免费看| 91女神在线视频| 超碰在线一区| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 久久伊人亚洲AV无码网站| 中文字幕日产av人| 欧美日韩午夜精品一区二区三区| AV天堂男人的天堂| 天天干天天舔| 亚洲性图91| 在线观看精品国产免费| 国产一二三福利视频网| 五月激情综合网| 欧美天天综合在线| 狠狠久久亚洲欧美专区| 精品日日人妻| 欧美日韩99精品麻豆传媒| 欧美丝袜美女电影一二三四区| 色久桃花影院在线观看| 999熟女精品| 无遮挡h肉动漫在线观看| 青青久久艹| 91蜜臀熟女| 日本不卡二区| 青青草玖玖爱| 日日操天天操| 国产精品不卡一区二区三区av| 亚洲中文字幕日产无码久久| 啪啪啪精品视频| 国产97在线播放| 欧美天天拍| 欧美日韩午夜精品一区二区三区| 欧美美女后入| 久久熟女人| 国产精品视频自拍在线| 一区超碰一区| 五月花婷婷| 日韩成年人性爱视频| 精品999999| yazhousetuoumei| 国产精品自在线发布| 99热在线播放| 一区二区视频你懂的| 国产精品一区午夜福利| 亚洲图片激情小说| 欧美日韩国产人人| 99热精品国产| 99色热| 久久精品国产99精品亚洲蜜...| 久久久久久久久久久久97 | 国内毛片欧美香蕉精品| 欧美亚洲韩国视频十五区 | 啊啊啊啊嗯嗯在线久久久| 色婷婷综合久久久久中文一区二区| 日韩性爱人人爱人人操| 色九久| 老鸭窝黄色视频网站| 久久五月综合| 柠檬AV导航| www.99色| 欧美精品庄| 亚洲区小说| 91丝袜在线视频| 久久9精品视频| 日本久久精品| 久草视频分类在线| 性色av网站| 伊人久久综合精品欧美| 国产精品丝袜在线| 欧综合网| 人妻丝袜肏逼| 夜夜爽爽夜夜精品视频| 欧美性爱一内片一区二区三区| 久久精品国产精品亚洲艾通辽熟妇 | 国产日比| 91精品国产麻豆国产自产在| 亚洲精品精品一区二区| 国产一级不卡在线观看| 大胆91| 欧 美 自 拍 偷 拍| 欧美福利视频啊啊啊啊| 无码人妻精品酒店| 久久加勒比| 午夜毛片亚洲精品片国产久久久| 国产白丝在线| 天天影视之亚洲综合网| 91欧美少妇| 久久九九精品一区二区 | 综合一区中亚洲国产成人综合精品| 男人的天堂久久| 国色综合天| 国产农村妇女毛片精品久久| 99久久综合| 97精品视频免费| 夜夜操av亚洲一区二区| 亚洲熟女综合| 亚洲人综合| 国产少妇内射| 久久男人| 91久久九九精品国产综合| 男人女人18禁片免费看网站| 国产毛片在线| 丰满高潮18xxxx| 手机看av网站在线看| 婷婷丁香五月综合| 精品少妇后入一区二区三区四区人妻巨乳| 男人的天堂在线有码| 99啪啪视频| 91欧美另类| 日本高清加勒比| 欧美 亚洲精品首页| AV中亚| 精品欧美不卡在线播放| 午夜电影在线观看无码专区| 不卡啪啪视频| 日韩精品人妻中文字幕有码午| 亚洲AV乱码专区国产噜噜亚洲 | 国产兽交视频在线播放| 成人小说另类在线| 制度丝袜99| 在线另类| 欧色综合| 上床啊啊啊| 26UUU欧美日本| 牛牛aV| 好吊妞转入那个网| 午夜精品久久久久| 久久精品国产99精品亚洲蜜... | 蜜臀无码一区二区| 91色宗合| 国产浮力影院第1页| 日韩三级一区| 久久久91福利姬| 福利视频网站| 影音先锋乱| 日本九九久久99播| 四虎免费在线播放| 日韩精品资源专区二区| 久久婷婷五月综合| 人妻熟女一区二区三区在线| 一区二区高清视频| 日韩性爱再线视频| 亚洲色综网| 老熟女搡BBBB搡BBBB视频| 国产a级午夜毛片| 99啪啪| 97超碰超碰| 日本123区操B视频| 久久久久久久久久久久黄色| 人人射人人操人人摸| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 图色综合网| 午夜精品久久久久久久第一页按摩| 亚洲精品毛片在线观看| 骚货人妻偷情自拍在线视频| 中文字幕一二三av| 亚州色图狠狠干| www.婷婷六月天| 色综合超碰超| 国产精品成久久久久午夜午夜| 色色五月天激情| 97超色| 麻豆视频国产一区二区| 毛片17S| 四虎av在线| 久久78| 人妻天天爽夜夜爽爽| 黄色av片三级三级三级免费看| 在线只有精品| AV女优男人的天堂| 久操热线| 精品人妻一区二区三区不卡断 | 一品道视频一区二区三区| 国产人妻精品一区二区三区秋霞| 7777奇米影视久久| 亚洲污污网站| 无码操逼网| 99热99re6国产在线播放| 性爱Av免费| 欧美情色贴图| 成人乱码一区二区三少妇| 天天射夜夜| 欧美刺激色黄片免费看| 怡红院亚洲怡春院av| 伊人久久大香线蕉无码| 国产九九九九九九| 午夜男女爽爽爽在线视频| 91N综合网| 91狠狠综合久久久| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 日韩免费人妻色情网站| 国产一国产一级毛片古装| 婷婷四五区| 色哟哟 日韩精品| 久久大精品乱码视频人妻熟女| 国产AV色黄看到爽| 午夜噜噜噜| 婷婷五月天激情四射| 97AV爱| 翔田千里AⅤHD无码| 伊人青青一区成人视频在线观看区 | 农村少妇久久久久久久| 蜜臀久久99精品久久综合| 久久久久久久97| 中美日韩毛片| 欧美极度丰满熟妇hd| 国产精品久久久久9999小说| 九一屌逼| 国产中文大片资源中文字幕| 亚洲97网站| 奸色色 男人天堂 天天射| 秋霞一集毛片观看| 欧美视频第二页| 97国产高清视频在线观看| 99热97| 日本有码影片下载| 日本阿v天堂在线观看| 青青草原综合久久大伊人精品| 超碰精品国产无码| 日韩精品人妻中文字幕不卡乱码| 久久久98网站免费视频| 日韩99精品视频综合区| 日韩AV噜噜噜一区二区三区四区 | av资源在线播放天堂| 91青青草| 玖色av| 熟女中出视频| 午夜免费视频1000| 日韩精品免费高清视频在线| 超碰95| 男人天堂毛片| 一区二区精品更新提醒| 亚洲AV性爱电影| 国内毛片欧美香蕉精品| 99久久99九九99九九九| 久日综合网| 少妇69中文| 综合熟女| 久久久免费的精品| 超97在线精品视频| 一级二级在线观看| 日韩91网站| 人妻无码一区二区三区久久99| 熟妇最新先锋一二三区| 任你爽视频| 国产欧美精选激情视频| 免费av在线播放二区| 啊啊啊啊操死我| 99久久99九九99九九九| 风月影院男女十八禁| 国产成人在线观看综合| 亚洲色人妻综合| 最新国产精品久久精品| 黑人狂躁日本妞一区二区三区| 91AV入口| 午夜操一操| 亚洲夜色在线| 97国产超碰| 日韩中文字幕宗合在线| 干少妇视频| 97久久国产亚洲精品超碰热| 久久男人网| 亚洲综合小视频小说在线观看| 婷婷五月天基地| 色五月婷婷中文字幕| 亚洲女毛多水多21P| 久久久久久一日韩字幕无码| 国产又黄又爽又刺激久久久久久| 少妇综合| 国产亚洲欧美每日在线| 成人一二| 人妻9117c| 少妇的嫩逼图片| 欧在线一二区| 外国91| 欧美第一页| 高清国产精品福利网站| 大香蕉免费3| 岛国黄片网站| 91快色色色色色| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 美女干逼2| 鸥美极品| 久久、1234| 免费99精品国产自在在线| 蜜桃丰满熟妇av无码区不卡| 大香蕉手机在线| 欲色综合| 尤物视频视频官网| 精品成人无码| 天天干天天狼在线视频| 中文字幕性感少妇av| 久久欧美性爱视频| 少妇蜜汁| 怡红院亚洲怡春院av| 91超碰丝袜制服| 一区二区三区视频| 无码动漫av中文字幕| 插日本熟女视频| 天天爽天天操| 日韩欧亚中文在线| 国产精品色约约| 国产精品成人午夜福利| 51久久夜色精品国产麻豆| 隔壁邻居波多野结衣中文字幕 | 久久久久久久久九九久孕交| 国产青青美女玩逼视频| 91性情| 久久成人国产精品| 四虎影院成年人片| 欧美一区二区日韩传媒搭讪精品| 国产欧洲精品亚洲午夜拍精品| 黑人性暴力毛片| 男人的天堂2018| 91站街按摩店老熟女熟女| 久一区久久蜜桃| 在线黄色污污网站| 亚州免费啪啪视频| 亚洲天堂自拍| 亚洲天堂精品日韩电影| 亚洲AV免费在线观看| 国产深喉视频一区二区| 亚洲阿v天堂在线| 最新av在线| 美日韩一二三区| 久久久青青草| 免费啪啪av| 日本狠狠干| www.acm成人黄色毛片| 国语少妇精| 久久艹逼视频| 97免费视频在线观看视频| 啊啊啊好想要| 国产精品久久久鸭无码的功能| 中文字幕av久久爽Av| 大但人体久久久久| 久久久久亚洲AV无码专区少妇 | 蜜乳AV网址| 视频分类 国内精品| 人妻精品一区二区全免费| 欧美三级偷拍| 免费黄色A片| 超碰在线人妻不卡| 少妇熟女1区2区3区| 亚洲九区| 亚洲天堂电影网99999| 亚洲免费成人在线高清无码视频| 黄色乱论网站| 超碰在线91| 99热这里只有精| 国产精品大屁股999| 亚洲av综合色区无码一| 日韩啪啪啪视频| 天堂在线一区二区| 免费观看日本操逼视频| 天天插天天插| 超碰97丝袜| 9l视频自拍9l九色成人| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 亚州,欧美在线| 黄色一级视| 超碰美女97| 人妖欧美一区二区| 国产高清精品福利| 91超碰在线播放| 日本视频一区二区三区| 四虎免费看黄| 久久av一级av少妇av高潮| 99re这里只有精品3| 男女性无套 免费九一| 丁香五月激情网| 男人的天堂网页| av在线浏览| 波多野结衣之双飞调教在线播放 | 久9爱精品| 97啪啪| 91精品丝袜久久久久久| 大香交伊人网| 肏逼视频日本| 快点操死我| 一区不卡在线观看av| 操死我干死我| 国产精品亚洲天堂网址| 在线黄色污污网站| 欧美日韩岛国大片在线观看| 色一区二区三区综合| www.狠狠| 97欧美| 婷婷情色五月天| 淫荡熟女乱伦网| 大香蕉99re| 欧美在线视频99| 国产丝袜欧美在线视频| 美美91成人国产精品欧美精品久久久久久久 | 免费av在线播放二区| 人人摸人人干| 亚洲免费人妻在| 伊人麻豆传媒| 啊啊啊不要啊啊受不了了视频在线| 最新岛国大片| 四虎在线视频| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 97视频免费播放| yiren97| 国产精品激情久久久久久久| 熟女精品日韩一区二区三区| 夜夜操91744565| 欧亚在线视频| 综合网91| 亚洲亚洲亚洲天堂天堂| 日本人体九九九九九九| 懂色av色欲av蜜臀av| 嗯嗯嗯啊啊在线观看| 色婷婷综合久久久久中文一区二区| 嫩草在线视频| 欧美色亚洲| 超碰98综合网| 荡小穴在线观看| 一区操逼日比视频| 一起草高清无码| 久久超碰av在线| 日韩中字av一区| 国产精品久久久久久 百度| 百度百度日本操逼| 欧美激情一| www.91欧美| 天天爱天天韩国日本牛牛牛牛| 国产 日韩 欧美高清| 超碰地址久久| 18精品一二区| 亚洲综合图色在线| 色婷婷综合久久久久中文一区二区 | 免费1级a做爰片观看| 东北熟女91| 97干综合网| 精品一国2| 久久鲁夜| 欧美色三级片91| 欧美国产日韩清纯唯美| 国产欧美岛国精品一区| 伊人精品久久网站| 无码免费精品高清| 国内毛片婷婷六月色| 大香蕉伊人网| 日韩精品人妻| 欧美综合色综合| 青女在线| 色男人色天堂东京热| 精品国产一区二区久久| 综合久草| 日本大片日本一区二区免费高清| 亚洲天堂热| 黑人精品成人一区二区三区| 另类 日韩 熟女| 日韩无码操逼片| 免费一级性爱久久| 在线中文字幕| 热久久国产| 51国产午夜精品视频| 久久久99免费| 国产亚洲精品一区二区三区| 免费人成毛片乱码| 淫荡网址| 精品人妻一区二区三区四区石在线 | 99热日| 久久成人网站| 日产成人久久| 久久大香蕉97| aV中文麻| 欧美日韩1234| 九九九精品成人免费视频小说| 日韩视频中文字幕| 被男人吃奶很爽的毛片| 亚洲一区二区三区春色| 午夜无遮挡男女啪啪视频| 国产JDAV无码视频在线观看| 日本免费一级AAA大片器| 天天色天天干天天爱| 久久激情亚洲精品无码?V| 福利在线观看一区二区| 欧美在线视频99| 蜜桃传媒一区二区亚洲| 人妻天堂综合网| 美女黄页| 性爱AV天堂| 天天日天天屌天天操| 亚洲综人网| 一区二区乱码福利| 91一区二区三区蜜桃| 亚洲一级性爱视频免费看| 精品久久人妻成人网| 91热爆在线| 蜜臀在线免费观看在线免费观看| 日韩精品9区| 性交一区二区在线播放| 99re这里只有精品2| 日本久久女同性恋视频| 吖在线不卡一区二区国产剧情 | 极品色社| av东京热男人的天堂| 色哟哟av| 黄色免费网| 欧美性爱www免费版| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 精品久久久久久中文字幕三区| 国产亚洲日本精品在线| 色婷婷99| 久久一二三四不卡 | 国产精品久久aV| 日韩一性一交一A片俄罗斯| 久热这里| 久久中出在线| 亚州男人天堂| 懂色AV蜜臀无码精品APP| 亚洲 图片 综合91| 日韩精品国模| 久久色精品视频在线| aaaa少妇高潮大片| 欧美日不卡| 免费男人的天堂| 欧美性xxxxx狂欢| 强奸乱亚洲| 日韩噜噜69| 4虎在线观看| 综合操逼| 久久男人网| 又大又大又大又粗爽高潮观看| 综合久久久久久久综合网| 亚州操操穴网| 色爱天堂| 国产精品嫩草久久久久| 蜜臀在线免费观看在线免费观看| wwe 天天干.com| 性色A∨91| 六月婷婷综合| 色五月第四色| 亚洲成人激情小说视频| 综合久久欧美| 成人精品欧洲亚洲| 97免费视频在线| 蜜桃无码AV一区二区| 搡老女人老91妇女熟女| 久久久久久网址| 综合影院亚洲| 91色欧美| 久久人妻精品| 国产第二页| 久久精品国内Av熟女高清| 手机av天堂久久久久| 九久久精| 五月综合激情网| 97在线播放| 国产一区二区三区影片| 208天天久久九九九| 超碰国产精品久| 欧美性爱一区二区三区四区| 亚洲欧美首页| 99热超碰| 女优大全 - 91n| 精品国产精品一区二区| 色网1| 国内精品嫩模A∨私拍小视频| 欧美日韩99精品麻豆传媒| 欧美天天综合| 五月丁香六月| 大肥女高潮bbwbbwhd视频| 五月丁香啪啪| 狠狠躁天天躁日日躁| 偷拍欧美激情| 校园春色亚洲色图| 五月天婷婷成人网| 91N综合网| 国产精品一二三区福利| 国产精品九九九| 超碰激情808| 人人操人人爽人人操人人| 天天爽夜夜欢视| 性影在线视频| 午夜福利在线合集| 国产女性无套 免费观看| 久久久9 9 9精品| 97色婷婷| 一级性爱视频免费观看| 高树玛利亚无码流出| 国产一级高跟丝袜| 大香蕉之青青草原| 亭亭丁香激情| 精品成人亚洲午夜电影| 亚洲和欧美裸体美女双飞视频| 欧美性爱1080p| 青青草好吊| 九九热九九热| 国产毛片久久久久久久| 成人精品视频| 国产这里只有精品| 日韩操逼性鲍| 男人天堂免费| 亚州色图第三区| 人人干黄色| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 美国aaaaa一级黄片| 老熟妇一区二区三区| 久草综合京东| www亚洲免费| 色臀AV| 啊啊啊啊啊啊啊啊啊啊在线观看| av网页一区二区三区| 亚洲精品人体| 欧美 牲| 色色激情五月天| 中国一级操逼视频| 亚洲九九视频| 国产精品密臀网在线观看| 日韩高潮一区| 高清国产性猛交xxxx乱大交| 九九热国产| 碰人碰碰人人开房人肉| 懂色AV一区二区三区| 日本性爱不卡视频| 91亚洲欧洲| 呻吟 欧美 日本 中出| 91丝袜美腿网站| 尤物一级在线免费观看| 国模无码人体一区二区三| 这里都是精品| 人人操人人操人人操人人操人人操人人人11.CM | 尤物av网站免费在线播放| 伊人国产av| 啪啪综合网| 国产女人和拘做爰视频| 综合另类| 夂久色| 秋霞一级A片黄色视频| 性感美女啊啊啊在线| 老熟妇综合| 天天做日日做天天欢。| 久久9久久| 久久久久久久久国产| 精品人妻1237| 综合熟女| 欧美成人黄网色网站| 国产免费黄色一级大片| 亚洲资源一区| 91热情品| 天堂蜜桃无码视频一区二区| 啊v视频在线观看| 一区二区三区视频国产免费| 日韩福利综合一区| 很很操在线| 99在线精品视频| 国产激情在线| 久久线上视频免费看| 日韩精品大香蕉伊人在线| 欧美色图成人网一区二区| 用力操死我| 美女刺激久久国产欧美| 五月丁香激情综合| 午夜精品探花| 日本操大逼| 激情小说成人日本无码一| 婷婷性网| 视频二区美腿制服人妻欧美| 国模无码人体一区二区三| 人人摸人人干| 亚洲熟妇无码一区二区三区| 日韩欧亚太美不卡| 国产有码一区| 97超碰色屌| 日韩欧美久久婷婷网站| 久久久久久大| 欧插网站| 超硑97精品| 夜夜肏2021| 日韩乱码Av| 日韩人妻大香蕉|