Bootstrap

架构实战营 - 模块 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. 同样的英雄和皮肤未同步导致最终购买多个

恢复后追回超卖的商品,并给予用户补偿。

异地多活架构示意图