或许大家体验过抢红包,但如何对现实世界的业务场景进行抽象,形成软件系统的需求,进行建模与技术选型,这是有一套“方法论”的。来看看本文吧!
通过移动互联网应用发红包成为了大众普遍的娱乐现象!
不过是定量的数量和金额的红包序列
库存主要维护: 剩余金额和数量
因为相生相死,库存模型和商品模型可以直接合并,将库存字段放入商品模型
商品和订单也是相生相死,可以合并
商品和活动也是相生相死,都是一对一关系,可以合并
所以,最终优化为两个子模型
子红包集合
无论红包数量多大,几率都一样
可玩性低,玩不了刺激,无太大的红包产生
作为一个高并发资金交易系统,势必存在资金交易安全和事务问题
◆ 本质是要保证剩余数量和金额字段不能为负数 ◆ 事务行锁稳定可靠 ,但性能较差,且容易引发死锁
红包业务中剩余数量和剩余金额不存在负数的场景
◆ 将剩余数量和剩余金额字段类型设计为无符号整型 ◆ 乐观锁 ,在where条件中限制,降低开销 ◆ 总体性能比事务行锁高30% ◆ 无符号字段+乐观锁的方法 ◆ 资金账户转账业务逻辑中,支出时会涉及到资金扣减 ◆ 收红包时红包剩余数量和剩余金额的扣减场景中
随着业务量增加,进入下一阶段