品二維碼溯源管理系統(tǒng)系統(tǒng)設(shè)計(jì)-一物一碼系統(tǒng) 6 大核心模塊賦碼驗(yàn)真追溯風(fēng)控分析與會員域設(shè)計(jì))
一、為什么要用域來設(shè)計(jì)很多人做防偽溯源系統(tǒng)第一反應(yīng)是建幾張表、寫幾個接口。結(jié)果做著做著賦碼、驗(yàn)真、追溯、營銷全攪在一起一個需求改動要改 10 個地方。這就是典型的大泥球架構(gòu)。我們的解法是領(lǐng)域驅(qū)動設(shè)計(jì)DDD把系統(tǒng)按業(yè)務(wù)域拆成 6 個獨(dú)立模塊。每個域有自己的數(shù)據(jù)庫、自己的服務(wù)、自己的團(tuán)隊(duì)通過事件總線解耦。二、6 大域定義與職責(zé)1. 賦碼域Code Domain職責(zé)碼生成、碼池管理、產(chǎn)線賦碼客戶端。核心實(shí)體CodeBatch碼段、Code單碼、CodePool碼池。特點(diǎn)寫多、對一致性要求極高不能重復(fù)。2. 驗(yàn)真域Verify Domain職責(zé)掃碼驗(yàn)真、狀態(tài)查詢、異常封禁。核心實(shí)體VerifyResult、VerifyLog。特點(diǎn)讀多、峰值極高大促、對延遲敏感。3. 追溯域Trace Domain職責(zé)履歷構(gòu)建、鏈路查詢、批次檢索。核心實(shí)體TraceEvent追溯事件、TraceChain鏈。特點(diǎn)檢索多、數(shù)據(jù)量大、讀多寫多。4. 風(fēng)控域Risk Domain職責(zé)批量偽造識別、地理圍欄、竄貨評分。核心實(shí)體RiskRule、RiskScore、Blacklist。特點(diǎn)計(jì)算密集、實(shí)時性要求高。5. 分析域Analytics Domain職責(zé)掃碼行為畫像、復(fù)購預(yù)測、BI 看板。核心實(shí)體UserPortrait、Metric、Dashboard。特點(diǎn)離線批處理為主、容忍延遲。6. 會員域Member Domain職責(zé)留資、積分、企微 SCRM、券營銷。核心實(shí)體Member、Point、Coupon。特點(diǎn)和營銷強(qiáng)綁定、寫多。三、域間關(guān)系事件總線解耦關(guān)鍵設(shè)計(jì)所有跨域數(shù)據(jù)流通過 Kafka 事件總線傳遞不互相直接 RPC 調(diào)用。賦碼域 ──CodeAssigned──? [Kafka] ──? 追溯域 / 驗(yàn)真域 / 分析域 驗(yàn)真域 ──CodeVerified──? [Kafka] ──? 風(fēng)控域 / 分析域 / 會員域 風(fēng)控域 ──RiskAlert────? [Kafka] ──? 會員域 / 告警好處賦碼產(chǎn)生事件驗(yàn)真/追溯/分析各自消費(fèi)互不影響新增一個營銷域只需訂閱現(xiàn)有事件不改任何老代碼某個域宕機(jī)其他域照常運(yùn)行最終一致。四、統(tǒng)一商品 ID 設(shè)計(jì)所有域打通的命脈是統(tǒng)一商品 ID 體系。我們設(shè)計(jì)了 4 級層級含義粒度誰用SPU產(chǎn)品級如茅臺 53°500ml品牌/BISKU規(guī)格級同款不同年份電商/庫存BATCH批次級同原料同產(chǎn)線質(zhì)檢/召回CODE單件碼每瓶唯一賦碼/驗(yàn)真/追溯所有域的數(shù)據(jù)庫都以 CODE 為最細(xì)粒度主鍵向上聚合到 SPU 查詢。這樣消費(fèi)者掃一瓶碼能追溯到它屬于哪個 SPU、哪一批倉儲掃一箱碼能拆出 N 個瓶碼產(chǎn)線賦一個碼自動歸屬到批次和 SKU。五、部署與擴(kuò)容策略每個域獨(dú)立部署、獨(dú)立擴(kuò)容驗(yàn)真域大促前獨(dú)立加節(jié)點(diǎn) Redis 副本讀多賦碼域按產(chǎn)線水平擴(kuò)展寫多追溯域只讀副本分流查詢分析域彈性/定時跑批大促時可臨時縮容。六、MVP 建議與避坑別一上來就搞 6 個域。我們的節(jié)奏MVP第 1 月賦碼 驗(yàn)真 追溯 3 域跑通閉環(huán)第 2 月加風(fēng)控域防竄貨第 3 月加分析域BI第 4 月加會員域私域。避坑域間不要共享數(shù)據(jù)庫共享數(shù)據(jù)庫 偽微服務(wù)最終還是會耦合。數(shù)據(jù)通過事件傳遞接受最終一致。