数据库热点数据实现
1. 背景
公司奖励户在活动期间发红包,涉及大量的并发。单行操作难以满足性能问题,通过子账户的拆分来解决问题
2. 流程
2.1 加钱
封装成组件。
1 维护可扣款子账户列表
2 在页面可以选择往哪个子账户加钱,加多少钱。
3 异步通知母账户加钱(MQ)。异步是为了性能考虑,如若使用同步必然降低性能。
2.2 扣款
封装成组件。
1 维护可扣款子账户列表(有余额的),每个子账户有个状态:是否可以扣款。
2 扣款的时候随机路由选择某个子账户做扣款。若失败,重试
3 扣款成功,异步同步母账户扣款(MQ). 异步是为了性能考虑,如若使用同步必然降低性能。
4 定时任务轮询,如果某个子账户没有钱,更新列表的子账户的状态。这样扣款的时候就不会因为子账户没有钱产生失败的情况。
2.3 业务模型
母账户
子账户
2.4 物理模型
母账户
母账户表. account
子账户
多张子账号表。假如有24个字账户,表明可以是 sub_account_0 - sub_account_23

浙公网安备 33010602011771号