交易系統熱點賬戶設計

一、背景和目標

  1. 背景

交易系統中會出現某些賬戶高頻進行扣款入賬的行爲。這些賬戶可以分爲兩種,一種是出賬熱點賬戶,另外一種使入賬熱點賬戶。單賬戶進行餘額更新會出現各種性能瓶頸、數據庫壓力、成功率等各種性能問題。

  1. 目標

通過該設計避免出現熱點賬戶的各種性能問題,及時對賬戶是否使熱點進行監控,分析、避免出現熱點賬戶帶來的一系列問題。

二、方案

1、思路

將單個賬戶拆分多個子賬戶。子賬戶使用借鑑商品上下架庫存動態補充。

2、總體

 

通過熱點賬戶配置,動態將一個賬戶拆分爲多個子賬戶。尾號0000固定爲入賬賬戶,尾號0001固定爲出賬大賬戶。整體賬戶出入帳流程如上圖。

 

 

3、入賬

 

1)入賬,獲取尾號0000的賬戶,保存待處理的入賬明細,保存成功則表示入賬成功(減少update賬戶餘額操作)。

2)Job,通過定時任務,更新尾號0000賬戶的待處理的入賬明細爲處理中,彙總處理中入賬總金額,對尾號0000賬戶進行餘額更新,更新完成後將處理中更新爲處理完成。

4、出賬

 

1)小額出賬:隨機獲取熱點賬戶的出賬子賬戶(上架),金額變更採用樂觀鎖餘額>=0來更新賬戶餘額。更新成功則記錄變動明細;更新失敗則更換子賬戶再次進行餘額變更。

2)大額出賬:存在需要出賬餘額大於某個閥值則將賬戶餘額設置爲尾號0001的子賬戶進行出賬;如果尾號0001子賬號餘額仍舊不足則觸發強制補錢操作。如下圖

 

5、入賬分配

 

入賬分配:主要對下架賬戶按照設置最小閥值金額的係數進行餘額補充,補充後將賬戶進行上架處理

6、監控

1)監控下架賬戶並及時告警

7、動態擴容

根據配置獲取對應的子賬號數量,對子賬號的擴容和縮減

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章