架构训练营模块七作业
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1、分析王者荣耀商城的业务特点,设计其异地多活架构;
2、按照模块 7 第 5 课的方式来设计异地多活架构。
【提示】
1、王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2、用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3、用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4、用户买鲜花、改名卡之类的道具可以买多个。
5、分析步骤参考模块 7 第 6 课的案例。
设计步骤 1 - 业务分级
王者荣耀商城异地多活应该保证,充值点券、购买虚拟商品、扣减点券三个核心业务。
设计步骤 2 - 数据分类
【充值点券】
1、调用微信钱包和 QQ 钱包充值本身支持了高可用。
【购买虚拟商品】
1、虚拟商品和实物商品有两个区别,第一虚拟商品没有库存概念,不需要考虑库存是否售空,第二虚拟商品没有物流概念,下完单就表示收货了。所以数据只会新增不会有修改操作。
【扣减点券】
1、点券可以允许有一定的额度的透支。
设计步骤 3 - 数据同步
【充值点券】
数据同步即可
【购买虚拟商品】
数据库同步即可
【扣减点券】
数据库同步即可
设计步骤 4 - 异常处理
【充值点券】
1、微信支付和 QQ 钱包挂了怎么办?
直接挂公告:商城系统停服维护。
2、玩家充值点券后,没有同步到异地机房,在异地机房不能购买怎么办?
通过事务合并,先让玩家充值,在消费,最后恢复的时候合并点点券。
【购买虚拟商品】
1、玩家在购买英雄和皮肤后,没有同步到异地机房,在另一个机房在购买怎么办?
由于英雄和皮肤是不能重复购买的,等待机房恢复后,手动补偿点券。
2、玩家鲜花改名卡购买后,没有同步到异地机房,在另一个机房重新购买了怎么办?
由于鲜花改名卡可以重复购买,等待机房恢复后,将数量合并即可。
【扣减点券】
1、玩家消费后,消费后的点券没有同步到异地机房,在异地机房还可以消费,怎么办?
可以存在一定的额度的透支。
评论