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