支付類(lèi)平臺(tái)保障資金安全和穩(wěn)定運(yùn)行的技術(shù)難點(diǎn)和解決辦法
懸在支付類(lèi)平臺(tái)頭上的達(dá)摩克利斯之劍——保障資金安全和穩(wěn)定運(yùn)行是如何實(shí)現(xiàn)的。主要講解基礎(chǔ)體系、資損控制和賬務(wù)高可用性三個(gè)方面,在實(shí)踐中遇到的難點(diǎn)和解決辦法:基礎(chǔ)體系
原有系統(tǒng)承接各種業(yè)務(wù)需求,很好的滿足當(dāng)時(shí)的業(yè)務(wù)需要。但缺乏全站統(tǒng)一的會(huì)員、賬務(wù)、交易基礎(chǔ)體系,支付平臺(tái)實(shí)施過(guò)程必須面對(duì)基礎(chǔ)體系融合、切換和遷移的種種困難。因此在基礎(chǔ)體系中首先要完成:
(1)會(huì)員體系融合
(2)統(tǒng)一賬務(wù)體系
(3)統(tǒng)一交易中心
其次,新老交易系統(tǒng)遷移時(shí)要采用逐步分流、兼容過(guò)渡的方式。建立流量分流系統(tǒng),切換流量從小到大分步驗(yàn)證新交易的正確和兼容性;例如針對(duì)退款等此類(lèi)關(guān)聯(lián)交易,按同源處理原則分流到原正單處理的系統(tǒng)兼容過(guò)渡。這樣,新交易既能得到充分驗(yàn)證,同時(shí)切換遷移時(shí)上游系統(tǒng)或外部用戶(hù)無(wú)感知。資損控制金融機(jī)構(gòu)存在的意義就是承擔(dān)風(fēng)險(xiǎn)、獲得收益,作為第三方支付公司,資損控制是資金安全的重要指標(biāo),這里所說(shuō)的資損是指交易、賬務(wù)等系統(tǒng)因程序邏輯或系統(tǒng)異常導(dǎo)致的資產(chǎn)損失。
(1)冪等控制
分布式架構(gòu)各系統(tǒng)服務(wù)間的訪問(wèn)難免出現(xiàn)處理中斷或訪問(wèn)超時(shí)等情況,通常的做法是通過(guò)重試補(bǔ)償?shù)姆绞浇鉀Q,對(duì)于支付系統(tǒng)這種重試如果沒(méi)有冪等控制就會(huì)產(chǎn)生資損,在惡化的情況下甚至是災(zāi)難。
新支付平臺(tái)從業(yè)務(wù)、交易、支付、賬務(wù)、金融渠道的關(guān)鍵鏈路上增加冪等控制和***流水號(hào),具體來(lái)說(shuō)就是在數(shù)據(jù)庫(kù)上增加一張冪等鎖表,用流水號(hào)控制資金轉(zhuǎn)移活動(dòng)的重復(fù)執(zhí)行。
(2)資金核算
除了聯(lián)機(jī)交易期間控制資損之外還需進(jìn)行資金核算,日清月結(jié)確保每日交易、賬務(wù)資金無(wú)誤;主要資金核算內(nèi)容包含下圖所示:
(3)數(shù)據(jù)一致性
通常一次支付過(guò)程需要涉及多個(gè)支付工具或多個(gè)賬戶(hù)的資金轉(zhuǎn)移,特別是組合支付工具的場(chǎng)景。步驟一旦出現(xiàn)不一致,則會(huì)出現(xiàn)資金風(fēng)險(xiǎn);新支付平臺(tái)業(yè)務(wù)流程采用“先收后付不墊資”原則和“掉單補(bǔ)查”機(jī)制控制數(shù)據(jù)不一致產(chǎn)生的資損,后續(xù)規(guī)劃使用最終一致性的分布式事務(wù)或稱(chēng)柔性事務(wù)來(lái)解決此類(lèi)數(shù)據(jù)不一致問(wèn)題。賬務(wù)高可用性高可用性是支付服務(wù)質(zhì)量的重要指標(biāo)。平臺(tái)的業(yè)務(wù)量越來(lái)越大,系統(tǒng)越來(lái)愈多,特別是關(guān)鍵鏈路上的核心系統(tǒng),如:賬務(wù)核心的異常,就會(huì)影響全站大面積的業(yè)務(wù)。下面介紹賬務(wù)高可用性設(shè)計(jì)中的緩沖記賬和異步記賬。
(1)緩沖記賬
參與緩沖記賬的賬戶(hù)在賬務(wù)請(qǐng)求時(shí)系統(tǒng)先將記賬信息登記在緩沖區(qū),緩沖記賬每隔一定時(shí)間對(duì)于當(dāng)日的緩沖賬務(wù)操作請(qǐng)求進(jìn)行逐筆記賬并更新賬戶(hù)余額。這樣即使有大批量業(yè)務(wù)數(shù)據(jù)的賬戶(hù),賬戶(hù)余額和賬務(wù)明細(xì)每隔幾分鐘更新一次,在一定時(shí)間內(nèi)能滿足賬戶(hù)查詢(xún)的需要,同時(shí)能解決熱點(diǎn)賬戶(hù)并發(fā)引起的數(shù)據(jù)庫(kù)鎖超時(shí)問(wèn)題。
(2)異步記賬
異步記賬是在特殊業(yè)務(wù)場(chǎng)景下的記賬優(yōu)化,當(dāng)業(yè)務(wù)對(duì)賬戶(hù)余額實(shí)時(shí)一致性要求不高時(shí),可以通過(guò)異步記賬,緩解高峰時(shí)段大量同步調(diào)用賬務(wù)服務(wù)而產(chǎn)生的記賬壓力。本文作者:網(wǎng)銀在線資深架構(gòu)師 阮森靈
根據(jù)實(shí)際場(chǎng)景精簡(jiǎn)了文章中的部分細(xì)節(jié)內(nèi)容,全文刊登在京東內(nèi)刊《架構(gòu)師》雜志第四期
本文為原創(chuàng)作品,為尊重作者的勞動(dòng)成果,請(qǐng)轉(zhuǎn)發(fā)務(wù)必注明出處及作者。