前言
到家運費系統(tǒng)簡介
BCS設(shè)計與實踐
總結(jié)與展望
任何系統(tǒng)在需求迭代過程中都會產(chǎn)生一定BUG,幾乎所有BUG都會在功能上線前發(fā)現(xiàn)修復,但是難免會有漏網(wǎng)之魚。寫出BUG并不可怕,可怕的是寫出的BUG都沒有及時被發(fā)現(xiàn),等BUG引爆出來的時候已造成巨大資金虧損。如何在系統(tǒng)出現(xiàn)問題前或問題出現(xiàn)后及時發(fā)現(xiàn)解決,這個問題是運費團隊一直思考的問題。雖然所在團隊制定一系列制度來避免此類的發(fā)生,但是仍然無法完全避免此類問題的出現(xiàn)。
到家運費團隊結(jié)合目前運費業(yè)務(wù)場景和系統(tǒng)痛點設(shè)計出一套運費BCS系統(tǒng)(業(yè)務(wù)校驗系統(tǒng))來保障系統(tǒng)穩(wěn)定。目前線上出現(xiàn)問題后可快速被發(fā)現(xiàn),如數(shù)據(jù)異構(gòu)改造引發(fā)的數(shù)據(jù)不一致、計算邏輯錯誤造成的資金虧損、運營誤操作造成的資金虧損等一系列問題。
到家運費系統(tǒng)主要分為B端和C端兩種業(yè)務(wù)。
B端業(yè)務(wù)分為商家端和平臺運營端,商家端由商家運營去配置門店運費基礎(chǔ)信息和運費促銷活動。運營端由到家運營設(shè)置運費規(guī)則信息。
C端業(yè)務(wù)是基于運費規(guī)則對訂單進行實時運費計算。
到家運費系統(tǒng)除了提供支撐到家內(nèi)部業(yè)務(wù)能力外同樣對京東主站融合共建類業(yè)務(wù)提供支持。其中主要代表業(yè)務(wù)為小時購共建業(yè)務(wù),用戶可在京東商城小時購模塊區(qū)域通過門店結(jié)算下單,到家運費系統(tǒng)為業(yè)務(wù)共建提供運費規(guī)則計算所需要的數(shù)據(jù)。小時購數(shù)據(jù)由到家B端入口管理配置,修改后通過數(shù)據(jù)同步方式傳遞到京東主站運費系統(tǒng)。
運費BCS系統(tǒng)基于現(xiàn)有業(yè)務(wù)總結(jié)出多種校驗?zāi)J剑煌r災(zāi)J接兄鄳?yīng)的適用場景。
主要適用校驗場景:
多端垂直接入,漏測率高。
回溯計算邏輯上下文場景。
主要適用校驗場景:
運營誤操作。
業(yè)務(wù)漏洞或技術(shù)漏洞。
主要實現(xiàn)原理:
采取校驗的方式為最終一致校驗,規(guī)避入口和中間流程的繁瑣復雜,通過結(jié)果反向驗證整個流程是否存在問題。
同源異構(gòu)數(shù)據(jù)的一致性問題校驗主要體現(xiàn)在到家運費系統(tǒng)中小時購業(yè)務(wù)處理。小時購業(yè)務(wù)每次需求迭代都需要特別考慮幾個點,一旦這幾個點出問題不但會產(chǎn)生數(shù)據(jù)不一致并且不好被快速發(fā)現(xiàn)。問題點如下:
業(yè)務(wù)數(shù)據(jù)變更主要來源于B端業(yè)務(wù),但是B端修改數(shù)據(jù)的入口較多(如開放平臺、商家中心等),而且每個入口數(shù)據(jù)變更方式也同樣多樣化(如單條新增、批量修改、刪除等),有時候一個功能迭代可能涉及到多個模塊的修改,如果測試和開發(fā)有所遺漏就會出現(xiàn)一定問題,這種情況對于跟錢打交道的核心系統(tǒng)來說是不會被允許的,目前這種需求處理的方式無外乎就是靠著文檔梳理、產(chǎn)品研發(fā)測試對業(yè)務(wù)熟悉程度進行規(guī)避,但是杯水車薪。這種流程依舊存在巨大隱患,無論是在對接初期還是后期的功能迭代中總?cè)菀走z漏功能改造點。
部分業(yè)務(wù)流程節(jié)點多且邏輯復雜,并且流轉(zhuǎn)到最后節(jié)點涉及數(shù)據(jù)量很難預知。小時購運費數(shù)據(jù)可以針對不同方式對運費數(shù)據(jù)變更,因為運費配置模版生效是有優(yōu)先級的,會根據(jù)命中的運費模版實時計算出不同的運費信息。如果調(diào)整某個城市下的運費,那么涉及到的門店和其命中運費模版數(shù)據(jù)很難被提前預知出來,并且期間會經(jīng)過多次數(shù)據(jù)拆分轉(zhuǎn)換,先查詢出城市下所有門店,然后調(diào)用多個服務(wù)批量補全同步所需要的數(shù)據(jù)(數(shù)據(jù)過多需要多次補全),最終同步到京東主站運費系統(tǒng)。其中一個步驟出現(xiàn)問題都會造成部分數(shù)據(jù)丟失未同步。
具體實現(xiàn)方式:
模式核心是通過反向校驗(最終一致性校驗)方式對數(shù)據(jù)進行校驗,從而規(guī)避需要考慮正向流程中繁多的業(yè)務(wù)入口、復雜的同步流程等場景,只需要比較到家存儲數(shù)據(jù)與京東主站運費數(shù)據(jù)是否一致即可。什么時候去觸發(fā)校驗是一個需要考慮的重要點,總結(jié)出兩套方案如下:
實現(xiàn)方式 |
優(yōu)缺點 |
正向通知延遲校驗+反向通知校驗
|
優(yōu)點: 通過雙向校驗可以快速校驗出雙方數(shù)據(jù)同步后數(shù)據(jù)不一致問題。 缺點: 需要到家與京東主站運費改造,與業(yè)務(wù)流程強耦合,一旦業(yè)務(wù)變更還需要考慮校驗流程,功能開發(fā)改造幾乎是雙倍的工作量。 |
定期輪詢數(shù)據(jù)對比校驗
|
優(yōu)點: 不依賴到家和京東業(yè)務(wù)只關(guān)注最終結(jié)果,業(yè)務(wù)調(diào)整或出現(xiàn)問題不會影響校驗。 缺點: 每次都進行全量校驗比較耗時,并且數(shù)據(jù)校驗有一定延遲。 |
進行綜合考慮最終決定使用第二套方案,校驗邏輯可以完全獨立原業(yè)務(wù)外,并且原系統(tǒng)不會產(chǎn)生任何接入成本。功能圖如下:
任務(wù)發(fā)布者:周期性獲取小時購全量門店數(shù)據(jù)并放入到任務(wù)池中,待任務(wù)執(zhí)行器校驗門店數(shù)據(jù)是否一致。
任務(wù)池:存放待校驗京東到家與京東主站運費數(shù)據(jù)的門店id。
任務(wù)執(zhí)行器:實時拉取到家和京東運費數(shù)據(jù),并選擇提供的校驗規(guī)則去校驗數(shù)據(jù)一致情況。
數(shù)據(jù)一致校驗?zāi)J竭€提供一個可視化查詢界面方便查看數(shù)據(jù)一致情況,并且方便定位查詢出同步產(chǎn)生問題點。如果到家運費信息調(diào)整后因系統(tǒng)問題未同步至京東主站運費系統(tǒng)中,除報警通知外可以在該界面查詢出具體什么信息不同步,問題確定后可以手動同步修正數(shù)據(jù)。
主要實現(xiàn)原理
采取校驗的方式是收集業(yè)務(wù)數(shù)據(jù)并根據(jù)配置的校驗規(guī)則進行業(yè)務(wù)合理校驗。
主要實現(xiàn)方式是在運費項目中集成數(shù)據(jù)采集端,將一套完整業(yè)務(wù)涉及的相關(guān)的業(yè)務(wù)數(shù)據(jù)進行串聯(lián),將串聯(lián)后的數(shù)據(jù)發(fā)送到數(shù)據(jù)采集端。目前數(shù)據(jù)采集端基于接口業(yè)務(wù)數(shù)據(jù)采集,使用注解AOP實現(xiàn)方式。通過收集影響運費計算的源數(shù)據(jù),依靠http協(xié)議進行實時上報,發(fā)送過程使用異步線程池,如果期間待發(fā)送任務(wù)達到閾值后丟棄新產(chǎn)生的任務(wù),通過這些流程最終完成數(shù)據(jù)上報流程。
業(yè)務(wù)數(shù)據(jù)在運費BCS系統(tǒng)進行收集,收集到的數(shù)據(jù)進行邏輯聚合,拆解根據(jù)配置好的校驗規(guī)則去做業(yè)務(wù)校驗,相關(guān)的數(shù)據(jù)可用于核心計算流程查詢分析,同樣也可以為人工排查提供依據(jù)。
具體應(yīng)用方式:
通過BCS數(shù)據(jù)采集端采集數(shù)據(jù)后就可以使用這些數(shù)據(jù)去做校驗,針對需要校驗不同業(yè)務(wù)場景功能實現(xiàn)有一定差別,具體如下。
校驗業(yè)務(wù) |
實現(xiàn)方式 |
運營誤操作 |
運營操作后可根據(jù)經(jīng)驗值判定當前操作是否存在不合理,一旦出現(xiàn)可能造成損失的操作進行預警。如配送超過限定閾值需要收取某項運費,而通過規(guī)則引擎檢查到不符合相應(yīng)運費收費規(guī)則,則判定未運營操作失誤。 |
調(diào)用鏈數(shù)據(jù)查詢 |
在日常工作中一定會需要通過日志輔助排查問題,但是日志線上可能會經(jīng)常關(guān)閉或者流程過長串聯(lián)查找較為困難。運費BCS系統(tǒng)將收集到的核心業(yè)務(wù)數(shù)據(jù)獨立存儲,方便人工驗查業(yè)務(wù)數(shù)據(jù)正確性。 |
運費明細報表統(tǒng)計預警 |
通過用戶觸發(fā)調(diào)用運費對訂單運費明細數(shù)據(jù)存儲統(tǒng)計,理論來說新功能上線后通過數(shù)據(jù)的同比、環(huán)比發(fā)現(xiàn)數(shù)據(jù)差異過大,新功能存在一定問題。如運費優(yōu)惠疊加計算失誤,互斥優(yōu)惠進行疊加使用,通過規(guī)則引擎檢查到統(tǒng)計報表中訂單單均運費實收必然會成下降趨勢,檢測到后判定新功能邏輯有問題進行預警。 |
運費BCS系統(tǒng)是基于現(xiàn)有運費業(yè)務(wù)提煉出來的可擴展校驗系統(tǒng),從上線至今已幫助運費解決不少問題其中不缺乏生產(chǎn)環(huán)境的隱藏雷點。運費BCS系統(tǒng)仍處于摸索階段還有很多計劃中的功能待實現(xiàn),如支持更靈活的規(guī)則配置和校驗、報警精確化、問題數(shù)據(jù)自動訂正處理等。
瑪氏中國|2025年度瑪氏箭牌北京區(qū)域包材及原材料倉儲(VMI)項目
2236 閱讀華為的物流“布局”,為何備受關(guān)注?
1495 閱讀北美倉配一體機會和風險
1299 閱讀?年營收15億的跨境物流企業(yè)要上市
1182 閱讀解秘粵港澳大灣區(qū)規(guī)模最大的生產(chǎn)服務(wù)型國家物流樞紐——廣州東部公鐵聯(lián)運樞紐
1099 閱讀縱騰集團借殼上市,6.4億收購A股上市公司綠康生化
1008 閱讀TEMU美區(qū)半托管即將開放國內(nèi)發(fā)貨模式
869 閱讀京東物流一線員工日10周年:為5年、10年老員工授勛,為15000名標桿頒獎
829 閱讀15倍爆發(fā)式增長,網(wǎng)絡(luò)貨運行業(yè)跑出了一匹黑馬
825 閱讀2024年快遞滿意度出爐:順豐、京東快遞排名最高
781 閱讀