隨著有讚支付體量的增大,資產部門承擔的資金管理,風險把控的責任也越大。我們一方面要小步快跑,快速支撐業務,又要穩住底盤,守好底線。支付業務底線就是守護使用者的每一分錢,不能有資金損失。在我們搭建這套體系前,有讚支付資金類的線上監控是個盲區,缺乏自我發現的能力。業務成功了,但內部對使用者的資金操作可能是錯誤的,導致資損。而且故障發生到發現的時間很長,且大部分是使用者上報,導致故障的影響面擴大,使用者的信任度降低。
預防資損有很多種手段,除了事前線下通過各種測試手段保障資金安全外,線上也是非常重要的一環。除了發現問題,相應的,出現故障時,資損止血的能力也需要配套跟上。
舉乙個最基本的支付業務場景,在有贊內部會經歷以下幾個系統之間的互動:
通過上圖可以看出每個系統的處理結果,會依據系統建立的模型儲存在資料庫中,部分關鍵資訊會傳輸給下層系統。系統之間處理的重要資訊如金額、賬戶不一致就會導致資損。目前我們也內部對賬會發現這些問題,但是內部對賬都是每天跑批執行一次。如果依靠內部對賬來發現這個問題,資損早就發生了。需要呼叫很大的人力物力去追款,大部分情況下還追不回來。我們分析了有贊近一年來的資損場景,結合歷史的經驗,總結出資損類故障發生有幾下幾大類:
1)有正確的輸入,錯誤的輸出:比如系統與系統之間的金額儲存單位不一致,或者自己處理金額正確,傳輸給下游的金額錯誤,導致後面交易金額錯誤;
2)上下游系統的資料不一致:該處理的沒處理,該到達終態的單據沒有到達終態;
3)冪等控制失效,多扣款或多入賬;
4)系統內部邏輯錯誤,無對外輸出;
5)人工修復異常場景,產生資損。
基於解決以上問題的目的,我們設計了實時防控資損體系。總體設計思路圍繞以下幾點:
1)發現問題的實時性,減少故障的影響面;
2)資訊流一致性兩兩比對、資金流平衡型檢查;
3)全方位監控:業務觸發、人工變更資金檢測、歷史資料檢測;
4)檢測的準確性,無誤報;
5)和支付鏈路解藕,不影響主鏈路。
平台能力是基礎,檢測規則是其靈魂。基於對業務的豐富經驗,我們可以沉澱一些業務資金規則,從旁路來約束和檢測系統邏輯的正確性。比如支付金額-退款金額應該==結算金額,退款金額不能大於支付金額,憑證支付、現金支付無資金流型別不用呼叫賬務,支付和賬務之間會經過結算的處理,賬務累計出入金額和支付的金額應該要相等。
系統定位於事前線下測試環境兜底,事中一致性檢測,事後資金兜底,不對業務造成入侵,完全旁路執行。觸發點有 2 個,業務事件訊息和資料庫變更 binlog 資訊。
分三類資訊處理:
1) 基於各個業務事件比如支付完成事件、退款完成事件、確認收貨時結算完成事件,賬務收支明細變更事件等,觸發執行系統內配置的依賴此事件的規則;
2) 通過監聽 binlog 變更,可以檢測到人為操作類變更, 按定義好的邏輯生成對應的檢查點,每個檢查點有包含多個鏈路檢測。觸發對應的規則執行檢測全鏈路資料的一致性、資金的平衡性;
3) 人工處理歷史資料前,對歷史資料的質量進行前置檢測。保證不產生二次資損。
通過系統間兩兩核對資料一致性,或者抽象出系統內的業務規則、資金規則旁路自檢來發現故障。並且實時獲取資料,實時執行,對於業務處理上有滯後和緩衝的場景,我們提供了非同步執行的機制,以及三次重試的機會。全面提供系統整體的容錯性,無因系統設計問題導致的誤報。
經過系統的沉澱之後,我們將過程中的資料儲存到了 hbase,把整個支付過程落地成了視覺化試圖,可清晰的檢視每個環節的資料形態,具體資料就不展示了。
比如一筆訂單可以看到,當前已經是退款完成狀態,對應的支付成功時支付、結算、計費、賬務資料形態:
退款完成環節支付、結算、計費、賬務資料形態:
熔斷的處理流程圖如下:
基於我們之前建立的異常發現能力,同時我們需要具備資金止損能力。建立後台觸發熔斷操作入口,人工錄入熔斷配置或資損防控檢測出異常新增並生效熔斷配置,應急情況生效熔斷,日常支付鏈路不會過熔斷判斷。
熔斷支援按業務碼緯度、指定的單號、商戶號熔斷;
目前我們在業務方接入的熔斷埋點有 3 個點:退款、結算、出金。為什麼考慮這三個地方埋點呢?
1) 我們整個系統的定位都是不侵入主鏈路,對使用者無感知的,所以支付環節不考慮埋點。且錢不能流出有讚的體系外,一旦流出則無法追回。
2) 在支付鏈路產生的故障,考慮在退款、結算環節來做攔截,且支付完成後,錢停留在有贊的中間戶,此時訂正支付鏈路資料,對商戶來說無感知。
3) 一旦在結算環節出現問題,則考慮最後一道兜底,出金報送銀聯前進行攔截。
確認無誤或故障處理完成後,觸發解熔斷操作,業務繼續處理或駁回。
資損防控體系介紹
隨著有讚支付體量的增大,資產部門承擔的資金管理,風險把控的責任也越大。我們一方面要小步快跑,快速支撐業務,又要穩住底盤,守好底線。支付業務底線就是守護使用者的每一分錢,不能有資金損失。在我們搭建這套體系前,有讚支付資金類的線上監控是個盲區,缺乏自我發現的能力。業務成功了,但內部對使用者的資金操作可能...
資損防控系列 2 時間
1,應用場景 時間類交易常見的場景有時間一致性 包括但不限於日切時間,商戶結算時間,收益結算時間 對公節假日以及特殊日期,三方對賬,t 0 t 1日。2,時間防資損的checklist 時間一致性 1.1 伺服器時間不一致 1.1.1 說明 伺服器時間不一致,各系統 與第三方系統和資料庫間的時間 不...