交易系统热点账户设计

时间:2024-04-06 13:04:03

一、背景和目标

  1. 背景

交易系统中会出现某些账户高频进行扣款入账的行为。这些账户可以分为两种,一种是出账热点账户,另外一种使入账热点账户。单账户进行余额更新会出现各种性能瓶颈、数据库压力、成功率等各种性能问题。

  1. 目标

通过该设计避免出现热点账户的各种性能问题,及时对账户是否使热点进行监控,分析、避免出现热点账户带来的一系列问题。

二、方案

1、思路

将单个账户拆分多个子账户。子账户使用借鉴商品上下架库存动态补充。

2、总体

交易系统热点账户设计

 

通过热点账户配置,动态将一个账户拆分为多个子账户。尾号0000固定为入账账户,尾号0001固定为出账大账户。整体账户出入帐流程如上图。

 

 

3、入账

交易系统热点账户设计

 

1)入账,获取尾号0000的账户,保存待处理的入账明细,保存成功则表示入账成功(减少update账户余额操作)。

2)Job,通过定时任务,更新尾号0000账户的待处理的入账明细为处理中,汇总处理中入账总金额,对尾号0000账户进行余额更新,更新完成后将处理中更新为处理完成。

4、出账

交易系统热点账户设计

 

1)小额出账:随机获取热点账户的出账子账户(上架),金额变更采用乐观锁余额>=0来更新账户余额。更新成功则记录变动明细;更新失败则更换子账户再次进行余额变更。

2)大额出账:存在需要出账余额大于某个阀值则将账户余额设置为尾号0001的子账户进行出账;如果尾号0001子账号余额仍旧不足则触发强制补钱操作。如下图

交易系统热点账户设计

 

5、入账分配

交易系统热点账户设计

 

入账分配:主要对下架账户按照设置最小阀值金额的系数进行余额补充,补充后将账户进行上架处理

6、监控

交易系统热点账户设计

1)监控下架账户并及时告警

7、动态扩容

根据配置获取对应的子账号数量,对子账号的扩容和缩减