[提炼&总结]账户系统的设计

本文探讨了账户系统的设计,从基础的账户和流水记录开始,逐步升级到处理多个金融体系、错误处理、全局唯一标识以及回滚策略。随着复杂性的增加,引入了人工审核和业务账户的概念,确保系统内的账户总额平衡,提供了更精细的账户管理和交易记录分类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最简单

一般而言,系统内都会有用户模块,如果涉及到钱、积分、兑换券之类的,那么最好搞一套账户模块。

简单的账户模块分为两部分,账户和流水记录。
最简单的账户模块

在这种简单的模块内,典型的场景是用户做了某个操作,达到了预设条件,于是系统给予奖励,生成一条流水记录,该用户的账户内的金额也随之增加。用户也可以进行消费或提现,此时生成流水记录后,该用户的账户内金额是减少的。当然,用户还可以进行充值。

稍微复杂点

如果有人民币、积分、甚至美元等多个金融体系,那就要为每个用户创建一一对应的多个账户。如果涉及转换,那么一次转换就会生成两条流水记录,一条用于转出用户减少金额,另一条用户转入用户增加金额。

不论是在系统内对账户金额做增减,还是在涉及和第三方(支付宝、微信红包,等等)进行通讯的情况下,都会存在不成功的情况。这种场景需要确定两个问题,一是如何确定是哪条流水记录失败了,二是采取哪种回滚方式。

对于第一个问题,需要给定一个序列号用于标记。简单一点的使用高精度的当前时间,还可以使用UUID、数据库中表的Sequence生成器,更复杂一点的如Twitter的snowflake,这个算法可以保证全局唯一。

可以通过操作原始流水记录来回滚

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值