平台补贴账户、商户收款账户——这些”热点账户”被大量并发更新,数据库行锁成为瓶颈。如何设计记账方案?

一、热点账户问题的本质

  • 1.1 什么是热点账户——频繁被更新的账户(如平台补贴账户)
  • 1.2 数据库行锁的瓶颈——TPS 上限约 500-1000
  • 1.3 业务特点——余额正确性要求极高

二、方案 1:汇总记账

  • 2.1 流水明细实时写入
  • 2.2 账户余额定时汇总——每小时/每天更新一次
  • 2.3 优点——零并发冲突
  • 2.4 缺点——余额不实时

三、方案 2:缓冲记账

  • 3.1 多个缓冲账户——account_0account_1、…、account_9
  • 3.2 写入时分发到不同缓冲账户——分散热点
  • 3.3 定时汇总——缓冲账户 → 主账户
  • 3.4 查询时——SUM(主账户 + 所有缓冲账户)
  • 3.5 缓冲账户数量 = 预期 TPS / 单行锁 TPS

四、方案 3:异步记账

  • 4.1 用户账户实时扣减
  • 4.2 平台账户异步记账——MQ 削峰
  • 4.3 最终一致性——T+1 对账
  • 4.4 风险——平台账户余额可能暂时不准

五、方案 4:Redis 缓冲

  • 5.1 Redis 记录当日变动——INCRBY
  • 5.2 定时刷回数据库——定时任务
  • 5.3 Redis 持久化保证不丢

六、选型与组合

  • 6.1 资金安全要求高 → 缓冲记账
  • 6.2 允许一定延迟 → 汇总/异步记账
  • 6.3 综合推荐——缓冲记账 + Redis 加速