互聯(lián)網(wǎng)金融業(yè)務(wù)高頻債權(quán)轉(zhuǎn)讓交易系統(tǒng)架構(gòu)優(yōu)化實(shí)踐

? ? 互聯(lián)網(wǎng)金融業(yè)務(wù)中最核心的兩大業(yè)務(wù),一是資金,二是資產(chǎn)。

? ? 資產(chǎn),即我們所說(shuō)的債權(quán)。把資金放款出去對(duì)借債人形成一種債權(quán)關(guān)系。借債人支付利息是資產(chǎn)的主要收入。

? ? 資金,用戶將錢存入金融平臺(tái),金融平臺(tái)對(duì)用戶存入的資金進(jìn)行管理和購(gòu)買債權(quán),債權(quán)收入的利息是用戶資金利息的收入。

? ? 資金和資產(chǎn)形成兩大對(duì)象,在智能匹配中,資金按一定規(guī)則匹配最優(yōu)資產(chǎn),形成對(duì)用戶資金智能化管理和分散投資,以降低資金的風(fēng)險(xiǎn)。

? ? 構(gòu)建高頻流式交易資金匹配系統(tǒng):

? ? 一、抽取基礎(chǔ)服務(wù)最小單位原子操作層。

? ? 基礎(chǔ)服務(wù)層支持cas最小單位原子操作,將最小單位原子操作結(jié)果返回給上層匹配業(yè)務(wù)系統(tǒng)決策。基礎(chǔ)服務(wù)接口保證事物一致性和接口冪等性。

? 什么是最小單位原子操作?是把資產(chǎn)匹配過(guò)程中多步操作的大事物拆分成n個(gè)小步驟的小事物,如此一來(lái)上層業(yè)務(wù)根據(jù)每個(gè)小事物做系統(tǒng)決策處理。

? ? 二、資產(chǎn)交易匹配業(yè)務(wù)層。

? ? 匹配業(yè)務(wù)層依賴基礎(chǔ)服務(wù)最小單位原子操作實(shí)現(xiàn)業(yè)務(wù)層多任務(wù)并發(fā)處理業(yè)務(wù)。按原系統(tǒng)的多個(gè)任務(wù)之間由于相互修改賬戶資金或資產(chǎn)數(shù)據(jù)的影響,系統(tǒng)內(nèi)的任務(wù)之間是互斥關(guān)系。

? ? 如:a資產(chǎn)在匹配用戶1資金,b資產(chǎn)剛好也在匹配用戶1資金,更新用戶1資金可能會(huì)出現(xiàn)沖突,導(dǎo)致系統(tǒng)處理數(shù)據(jù)出現(xiàn)問(wèn)題。因此系統(tǒng)的任務(wù)之間只能是互斥關(guān)系,單線程串行執(zhí)行。

? ? 三、基于時(shí)間輪片實(shí)時(shí)調(diào)度系統(tǒng)以及資金隊(duì)列系統(tǒng)。

? ? 時(shí)間輪片高頻實(shí)時(shí)調(diào)度,是實(shí)現(xiàn)資產(chǎn)實(shí)時(shí)觸發(fā)與優(yōu)先級(jí)觸發(fā)資產(chǎn)匹配資金,撮合交易。

????資金隊(duì)列是為資產(chǎn)匹配,提供有效的用戶資金,能夠快速查找,實(shí)時(shí)返回不沖突的用戶數(shù)據(jù)給資產(chǎn)匹配系統(tǒng)。

實(shí)際業(yè)務(wù)場(chǎng)景分析

真實(shí)案例分析:新資產(chǎn)入庫(kù)

????????新入庫(kù)的資產(chǎn),在借債人與資金持有方發(fā)生債權(quán)交易,互聯(lián)網(wǎng)金融作為平臺(tái),通過(guò)資產(chǎn)匹配撮合雙方發(fā)生交易行為。一條資產(chǎn)過(guò)來(lái)可能會(huì)匹配很多用戶,查找到多個(gè)用戶,一次性匹配完成,要進(jìn)行for循環(huán)遍歷,在for循環(huán)外面是一個(gè)大事物,把整個(gè)操作完成后,才提交事物,如果其間用戶資金發(fā)送變化,或者被別的操作扣走,會(huì)導(dǎo)致此次匹配失敗,從而導(dǎo)致整個(gè)事物回滾。如果發(fā)生沖突的用戶多,會(huì)導(dǎo)致整個(gè)匹配失敗率大增,整個(gè)匹配效率非常低下。為保證用戶和資產(chǎn)操作不沖突,我們需要在整個(gè)資產(chǎn)和資金上加鎖,整個(gè)業(yè)務(wù)都串行執(zhí)行。加全局鎖之后,又會(huì)導(dǎo)致整個(gè)系統(tǒng)的匹配效率不高,一旦業(yè)務(wù)量上來(lái),全局鎖就會(huì)成為系統(tǒng)的瓶頸。偽代碼如下:

{

加全局分布式鎖

begin transaction

????查詢待匹配用戶資金

????for遍歷用戶資金{

????????開始匹配資產(chǎn),扣減用戶資金,和資產(chǎn)建立關(guān)聯(lián)關(guān)系

? ? ? ? 匹配完成;繼續(xù)遍歷下一個(gè)用戶

? ??}

? ? 遍歷完成

? ? 修改資產(chǎn)匹配金額和資產(chǎn)狀態(tài)

? ? commit

end transaction

釋放全局分布式鎖

}

使用本方案改進(jìn)實(shí)現(xiàn)步驟:

1、抽取底層基礎(chǔ)服務(wù)

????把最小粒度的扣減用戶資金,和資產(chǎn)建立關(guān)聯(lián)關(guān)系,修改資產(chǎn)匹配金額和資產(chǎn)狀態(tài)??闯梢粋€(gè)最小事物操作。抽取出底層基礎(chǔ)服務(wù),返回狀態(tài)給上層匹配業(yè)務(wù)系統(tǒng)去決策。

2、匹配業(yè)務(wù)系統(tǒng)

? ? 是實(shí)現(xiàn)單次匹配的步驟和匹配進(jìn)度管理。抽象成偽代碼如下:

查詢待匹配用戶資金(查詢資金隊(duì)列)

for遍歷用戶資金{

????匹配資產(chǎn)

? ? 調(diào)用底層基礎(chǔ)服務(wù)接口操作資產(chǎn)和資金綁定關(guān)系,返回成功,此次匹配成功。

? ? 進(jìn)入下一步匹配。

}

遍歷完成

3、時(shí)間輪片實(shí)時(shí)調(diào)度系統(tǒng)以及資金隊(duì)列系統(tǒng)

????????時(shí)間輪片高頻觸發(fā)待處理隊(duì)列中的待匹配資產(chǎn),資金隊(duì)列提供給資產(chǎn)匹配查找待匹配資金。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容