掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
隨著轉(zhuǎn)轉(zhuǎn)業(yè)務(wù)規(guī)??焖僭鲩L(zhǎng),系統(tǒng)拓?fù)浣Y(jié)構(gòu)越來(lái)越復(fù)雜,加上二手交易玩法也非常多(如C2C、C2B、B2B、B2C、C2B2C等),在這種復(fù)雜系統(tǒng)架構(gòu)和業(yè)務(wù)場(chǎng)景下,無(wú)法避免會(huì)出現(xiàn)RPC調(diào)用失敗,消息漏發(fā),線上Bug,業(yè)務(wù)新老規(guī)則沖突等因素引發(fā)數(shù)據(jù)異常,導(dǎo)致用戶客訴,以及公司產(chǎn)生損失。當(dāng)時(shí)公司沒有一個(gè)統(tǒng)一的數(shù)據(jù)校驗(yàn)治理方案,行業(yè)也無(wú)相關(guān)開源系統(tǒng),導(dǎo)致業(yè)務(wù)數(shù)據(jù)治理這塊一直都是一個(gè)沒有深入治理的領(lǐng)域?;谝陨媳尘埃D(zhuǎn)轉(zhuǎn)業(yè)務(wù)規(guī)則校驗(yàn)平臺(tái)(簡(jiǎn)稱ZZBCP:ZZ Business Check Platform)孕育而生,此系統(tǒng)幫助業(yè)務(wù)系統(tǒng)實(shí)時(shí)校驗(yàn)線上的每一筆單據(jù)數(shù)據(jù),填補(bǔ)了業(yè)務(wù)數(shù)據(jù)質(zhì)量治理領(lǐng)域的空白。

下圖是系統(tǒng)執(zhí)行規(guī)則流程圖,觸發(fā)事件源(trigger msg)驅(qū)動(dòng)規(guī)則執(zhí)行(實(shí)時(shí)或者延時(shí)執(zhí)行),目標(biāo)事件數(shù)據(jù)源(Target msg-可以不配置目標(biāo)數(shù)據(jù)源,則通過(guò)RPC方式獲取需要校驗(yàn)的目標(biāo)數(shù)據(jù)源)是被校驗(yàn)的數(shù)據(jù)內(nèi)容。
T1時(shí)刻,系統(tǒng)收到觸發(fā)消息后,命中規(guī)則且延時(shí)到T3時(shí)刻進(jìn)行數(shù)據(jù)校驗(yàn)動(dòng)作。T2時(shí)刻,收到目標(biāo)消息,則將目標(biāo)消息處理后,暫存到Codis中,等到T3時(shí)刻對(duì)目標(biāo)消息進(jìn)行校驗(yàn),然后根據(jù)校驗(yàn)結(jié)果執(zhí)行后續(xù)流程。
當(dāng)前支持訂閱MQ和Binlog消息(Redis/ES暫時(shí)不支持)。該模塊將觸發(fā)事件和目標(biāo)事件的數(shù)據(jù),統(tǒng)一轉(zhuǎn)化成ZZBCP系統(tǒng)標(biāo)準(zhǔn)的數(shù)據(jù)格式,方便后續(xù)規(guī)則執(zhí)行引擎統(tǒng)一進(jìn)行處理。當(dāng)前對(duì)binlog消費(fèi)使用的Kafaka,將MySql, TiDB的binlog通過(guò)CDC中間件(Canal, Maxwell)推送到Kafka消息中間件。
延時(shí)隊(duì)列中的規(guī)則到期后,會(huì)執(zhí)行數(shù)據(jù)組裝操作,從redis中查詢數(shù)據(jù)(目標(biāo)數(shù)據(jù)源),將數(shù)據(jù)按系統(tǒng)定義的格式組裝好,交給規(guī)則執(zhí)行引擎執(zhí)行。
當(dāng)前我們支持兩種規(guī)則執(zhí)行引擎:
該模塊主要是根據(jù)規(guī)則執(zhí)行引擎返回的結(jié)果,判斷是否需要進(jìn)行后續(xù)的告警操作,異常數(shù)據(jù)的收集,以及否需要進(jìn)行重試執(zhí)行校驗(yàn)動(dòng)作。
對(duì)于以下特殊場(chǎng)景的數(shù)據(jù)異常,如果可以自動(dòng)化觸發(fā)數(shù)據(jù)修復(fù),則可以使用此功能進(jìn)行一個(gè)數(shù)據(jù)修復(fù)。當(dāng)前我們的內(nèi)部財(cái)務(wù)對(duì)賬系統(tǒng),就使用了此功能對(duì)異常數(shù)據(jù)進(jìn)行自動(dòng)修復(fù)。鑒于時(shí)刻對(duì)線上數(shù)據(jù)的敬畏之心,此功能具體修復(fù)邏輯,建議控制在業(yè)務(wù)所屬領(lǐng)域內(nèi),ZZBCP平臺(tái)只是一個(gè)觸發(fā)修復(fù)的入口。
系統(tǒng)會(huì)將所有的規(guī)則信息上報(bào)到轉(zhuǎn)轉(zhuǎn)的監(jiān)控系統(tǒng)(Prometheus- 轉(zhuǎn)轉(zhuǎn)進(jìn)行了二次開發(fā)),對(duì)一些經(jīng)常關(guān)注的指標(biāo)進(jìn)行統(tǒng)計(jì)上報(bào)。如規(guī)則命中統(tǒng)計(jì),執(zhí)行規(guī)則校驗(yàn)通過(guò),執(zhí)行校驗(yàn)未通過(guò)次數(shù)等。
后臺(tái)配置提供了事件注冊(cè)注冊(cè),報(bào)警相關(guān)配置和灰度以及手動(dòng)執(zhí)行規(guī)則等功能。方便業(yè)務(wù)快速的配置和測(cè)試自己的規(guī)則校驗(yàn)邏輯。
參考資料
??https://www.infoq.cn/article/j*6vp2pbuggcrzbhcaog??
??https://tool.lu/en_US/deck/sw/detail?slide=8??

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流