架构实战营 - 模块 7 - 王者荣耀商城异地多活架构设计
背景
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
作业要求
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块7第5课的方法来设计异地多活架构。
提示
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者QQ钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买1个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块7第6课的案例
业务分析
业务组成
关键约束
虚拟物品商城与实物电商的区别
设计步骤1 - 业务分级
需要保活的业务:
舍弃的业务:
设计步骤2 - 数据分类
商城登录
商品信息展示
商品购买
设计步骤3 - 数据同步
商城登录
用户账号:只会新建不会修改,数据库同步+消息队列同步。
商品信息展示
商品购买
设计步骤4 –异常处理
商城登录
1. 游戏无法登录
游戏无法登录时,就不需要使用商城了。
2. 用户账号未同步至异地机房
重新从游戏中拿到用户账号即可,无需依赖同步数据。
商品信息展示
1. 商品ID未同步至异地机房
用户无法查看、购买该商品,不会有严重影响,等待恢复后同步即可。
2. 商品信息错误
影响用户浏览体验,但不影响用户购买,等待恢复后同步即可。
3. 商品库存错误
库存比真实值少时,可以人工增加库存,也可以不管;库存比真实值多时,允许超卖;不允许超卖的场景下,可以先超卖,恢复后追回已超卖的商品,并给予用户补偿。
商品购买
1. 历史订单数据未同步
等待恢复后即可查看
2. 用户点券余额错误
用户可以正常消费,恢复后余额可以修正为负值;也可以为用户增加临时额度,恢复后余额可以修正为负值。
3. 同样的英雄和皮肤未同步导致最终购买多个
恢复后追回超卖的商品,并给予用户补偿。
异地多活架构示意图
