写点什么

架构训练营 - 模块 7 作业

作者:焦龙
  • 2021 年 12 月 23 日
  • 本文字数:743 字

    阅读完需:约 2 分钟

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

【背景】

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


【作业要求】

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

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


【提示】

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

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

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

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

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


虚拟物品商场和淘宝这种实物商城的差别?

  1. 虚拟物品数量无限制,可以无限生成;

  2. 虚拟物品购买后实时到账,不存在快递的时间差;

  3. 点券直接作为一个数字存储在系统里, 和实际货币解绑定。

业务限制

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

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

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

数据分类

  1. 点券:和 RoleID+区服绑定,全局强一致性

  2. 用户购买的商品:和 RoleID+区服绑定,全局强一致性

  3. 订单 ID:每次新建,全局唯一,不会修改;

  4. 订单:和订单 ID 绑定,只会新建不会修改,订单中包含 RoleID、区服和购买物品。

数据同步

  1. 点券:全局一致性,采用数据库同步,充值只能在归属地充值;

  2. 用户购买的商品:全局一致性,采用数据库同步

  3. 订单ID:全局唯一,不可重复,每次新增 ,不同步,每次创建的时候用算法生成

  4. 订单:和订单 ID 绑定,不会修改,数据库主主同步即可。

异常处理

  1. 无法充值点券怎么办?

等待系统恢复。

  1. 重复购买英雄和皮肤怎么办?

集群恢复之后,退还用户购买的点券。

  1. 重复购买鲜花和改名卡怎么办?

承担购买结果,不需要用户退还点券。

商城异地多活架构示意图


用户头像

焦龙

关注

还未添加个人签名 2017.12.20 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营 - 模块 7 作业