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