写点什么

【模块七】王者荣耀商城异地多活架构设计

作者:yhjhero
  • 2022 年 4 月 07 日
  • 本文字数:1182 字

    阅读完需:约 4 分钟

作业:王者荣耀商城异地多活架构设计

【背景】

假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。

【作业要求】

1. 分析王者荣耀商城的业务特点,设计其异地多活架构;

2. 按照模块 7 第 5 课的方法来设计异地多活架构。

【提示】

1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;

2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;

3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;

4. 用户买鲜花、改名卡之类的道具可以买多个;

5. 分析步骤参考模块 7 第 6 课的案例。


【关键业务约束】

  1. 用户登录后才能购买商品;

  2. 商城列出商品,用户选中后才能购买;

  3. 只能用点券购买商品;

  4. 余额不够不能购买商品。


一、业务分级

王者荣耀商城的商品是虚拟物品,不需要库存,也不需要物流运输。

用户要购买物品,需要先登录商城。

用户登录商城后,浏览商城物品,选择所需物品购买。商

城里的物品需要用点券支付,因此用户要先用微信钱包或者 QQ 钱包充值点券,或者点券还有余额。


因此商城要做异地多活,核心业务有:

登录,商品展示,充值,购买


二、数据分类

【登录】

  1. 依赖 QQ 和微信账号授权登录,本身无需登录信息;

  2. 微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID;

  3. 王者荣耀只需要记录 RoleID 对应的区服信息,区服数据只会新增不会修改。


【商品展示】

商品 ID: 全局唯一,不会修改。


【充值】

RoleID:登录后就不会变了;

充值订单 ID:每次新建,算法生成,全局唯一,不会修改;

用户点券余额:和 RoleID 绑定,全局强一致。


【购买】

RoleID:登录后就不会变了;

商品 ID: 全局唯一,不会修改;

购买订单 ID:每次新建,算法生成,全局唯一,不会修改;

用户点券余额:和 RoleID 绑定,全局强一致。


三、数据同步

【登录】

RoleID 和区服对应关系,只会新建不会修改,数据库同步即可。


【商品展示】

商品 ID 全局唯一,不会修改,数据库同步即可。


【充值】

RoleID:同登录;

充值订单 ID:每次新建,算法生成,全局唯一,不会修改,数据库同步即可;

用户点券余额:和 RoleID 绑定,全局强一致。


【购买】

RoleID:同登录;

商品 ID: 同商品展示;

购买订单 ID:每次新建,算法生成,全局唯一,不会修改,数据库同步即可;

用户点券余额:和 RoleID 绑定,全局强一致。


四、异常处理

【登录】

  1. 微信和 QQ 挂了怎么办?

直接挂公告:系统停服维护。


  1. 玩家在某个区服开了小号,没同步到异地机房,怎么办?

等系统恢复就可以玩了。


【商品展示】

  1. 没有商品信息,购买不了商品怎么办?

等系统恢复就可以了。


【充值】

  1. 微信钱包或者 QQ 钱包充值业务挂了怎么办?

直接挂公告,系统暂停充值


  1. 用户充值购买了点券,没同步到异地机房怎么办?

等系统恢复


【购买】

  1. 用户购买物品过程中系统挂了怎么办?

人工修正数据,如果数据异常,要补偿用户


  1. 用户在某个区服购买的商品未能及时同步到异地机房,怎么办?

等系统恢复就可以了。


五、异地多活架构设计图


用户头像

yhjhero

关注

还未添加个人签名 2020.09.05 加入

还未添加个人简介

评论

发布
暂无评论
【模块七】王者荣耀商城异地多活架构设计_架构训练营_yhjhero_InfoQ写作平台