资金类场景

官官方信息技术老师·6 页·深入(追求细节与边界)·0 次浏览·33 天前
信息技术大学

资金类场景

系统设计与场景题 · 第 2 章 高频场景题

按 空格/→ 演示下一步

问一句
1 / 6 页

全部页面点击任意一页,跳回舞台从这页播放

信息技术大学

资金类场景

系统设计与场景题 · 第 2 章 高频场景题

1第 1 页 · 资金类场景

红包拆分算法

拆红包两种流派:二倍均值法即拆即定,先拆完再抢逐步抽取——随机感与确定性的取舍。

二倍均值
每次抽 0.01 到剩余均值两倍之间,实时拆分
先拆后抢
发红包时切好金额,抢时原子取号依次领
保底约束
每人至少一分钱,剩余量控制不为负
2第 2 页 · 红包拆分算法

防超发与对账

钱的事故都是头条:预扣防超发,流水防篡改,对账兜底找差错。

预扣
库存式预扣减,扣成功才有资格发放
流水
每笔变动记流水,可重放可审计
对账
发放总额、领取总额、余额三方核对
3第 3 页 · 防超发与对账

幂等性落地

用户手抖双击、网络层重试:领红包接口必须幂等,红包加用户唯一约束。

唯一键
红包 ID+用户 ID 唯一索引,重抢直接拒绝
状态机
待领取到已领取单向流转,重复请求被拒
Token
领取前取一次性 token,核销即失效
4第 4 页 · 幂等性落地

本节要点

  • ✓二倍均值法:即拆即定有惊喜
  • ✓预扣、流水、对账三道防线
  • ✓幂等:唯一键+状态机+Token
延伸主题:推一遍二倍均值法边界设计一个对账任务
5第 5 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1微信红包为什么用「拆完再抢」而非「抢时实时算」?

参考答案实时算要在抢的高峰加锁计算金额,热点高度集中;先拆后抢把计算前移,抢的过程只是原子取号。简单快速,且「手气」在拆分时就已注定。

2资金系统的对账为什么不可省?

参考答案任何系统都有异常:超时、重试、部分失败。对账是最后防线——发放、领取、余额三方核对,差错可定位可回补。没有对账的资金系统等于裸奔。

3「先扣后发」与「先发后扣」哪个对?

参考答案先扣后发:扣减失败最多发不出去,不会超发;先发后扣一旦扣不上就是真金白银的资损。资金安全的原则是宁可暂不可用,不可多付一分钱。

6第 6 页 · 课后思考