支付系統架構
支付系統整體來講分為:
1.支付網關:
負責所有的和三方支付公司的交互,包括支付、驗簽、退款、查詢、下載賬單等
2.回調網關:
負責接收三方支付的非同步支付結果通知、退款結果通知
3.定時任務:
主要是為了主動去獲取支付結果、退款結果,因為三方支付的非同步回調通知有時延時很長,我們的支付結果不能完全依賴三方支付的通知,我們每秒都主動查詢一遍該訂單在三方支付的支付結果
4.收銀台:
前端支付web頁面
5.管理後台:
支付結果查詢、退款結果查詢、路由規則管理等
幾個關鍵點如下:
過載保護
支付系統調用各三方支付公司的介面去完成支付流程,三方支付公司介面穩定性參差不齊,不要因為某個支付介面的不穩定導致整個系統的不可用,因此我們需要引入過載保護機制,在超時比較多或響應比較慢時及時去進行流量丟棄。實現原理如下:
每個服務都有個健康值,對應三個健康狀態:
死亡:健康值<=0
生病:0 < 健康值 < 60
健康:健康值>=60
當服務健康時正常調用,服務生病時休息幾秒鐘,當服務死亡時沉睡一段時間後再滿血復活,基本流程如下:
服務降級
所有相關依賴服務異常後,不要影響系統關鍵業務流程,比如如果優惠券系統有故障,我們只是在優惠券列表中提示優惠券載入失敗,而不會影響到支付流程和下單流程,大部分用戶支付和下單是不使用優惠券的。所有的服務依賴我們盡量做到自動降級,檢測到依賴服務問題後自動進行一些降級,使得業務影響最小化,隻影響盡量少的業務,關鍵業務不受影響。
冪等性
所有的介面必須滿足冪等性,分散式系統中某一個系統由於網路或者服務超時等原因失敗是很正常的,此時調用方可能會做重試,用戶在瀏覽器上也可能做刷新,不能因為用戶刷新,導致業務或數據異常,支付系統都是和錢打交道,冪等性顯得更加重要。
推薦閱讀:
※對賬-支付渠道對賬
※支付業務的賬戶設計
※互聯網金融系統的功能設計系列-對賬差異處理的方式
※九卦| 央行發布II、III類賬戶開立重大變革通知
※靜脈識別支付
TAG:支付 |