写点什么

架构实战营 模块七作业

作者:felix
  • 2021 年 12 月 03 日
  • 本文字数:1473 字

    阅读完需:约 5 分钟

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


【背景】

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


【作业要求】

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

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


【提示】

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

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

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

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

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


一、业务背景

【业务数据】

2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。


【业务功能】

1、登录:使用微信或者 QQ 账号登录游戏;

2、充值:先调用微信钱包或者 QQ 钱包充值点券,在用点券支付;

3、商品:英雄、皮肤以及鲜花、改名卡之类道具商品展示;

4、订购:用户购买商品,并给对应 roleID 和区服增加物品


【关键业务约束】

1、需要登录之后才能充值和订购

2、虚拟物品商城没有库存和物流发货,但需要虚拟发货

3、余额(点券)足够支付商品时,才能购买

4、同样的英雄、皮肤不能重复购买

5、鲜花、改名卡之类的道具不限购

二、业务分类

1、注册、登录:依赖 QQ 和微信账号授权登录

2、充值:依赖微信钱包或者 QQ 钱包充值点券

3、余额(点券):用于购买商品,当点券数大于购买商品所需点券时才能下单

4、商品订购:同一 RoleID 和区服下,英雄和皮肤只能买 1 个,需要强一致性;鲜花、改名卡之类的道具可以买多个,需要强一致性。

优先级:登录、商品订购、余额(点券)

三、数据分类

【登录】

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

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

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

【商品订购】

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

商品数据:和商品 ID 绑定,只会新建很少修改。

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

订单数据:和订单 ID 绑定,只会新建不会修改,例如物品信息、支付记录、发放记录等。

订购物品:对应放在 RoleID、区服用户的背包

【余额(点券)】

RoleID:登录后就不会变了;

流水 ID:每次新建,全局唯一,不会修改;

收支数据:和流水 ID 绑定,只会新建不会修改,例如充值记录、消费记录等。

四、数据同步

【登录】

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

【商品订购】

1. RoleID:同登录;

2. 订单 ID:每次新建,全局唯一,不会修改,用算法生成,数据库同步为主,辅以消息队列同步;

3. 订单数据:和订购 ID 绑定,不会修改,数据库同步为主,辅以消息队列同步。

4、订购物品:与 RoleID、区服用户绑定,只会新建不会修改,数据库同步为主。

【余额(点券)】

1、RoleID:同登录;

2、流水 ID:每次新建,全局唯一,不会修改,用算法生成,数据库同步即可;

3、收支数据:和流水 ID 绑定,不会修改,数据库同步即可。

五、异常处理

1、用户登录不了或者没有对应区服信息

等系统恢复就可以玩了。

2、购买完成,但没有看到订购的道具怎么办?

适当容忍,用户等系统恢复了再查看。

3、充值过程中微信钱包和 QQ 钱包挂了怎么办?

直接挂公告:系统停服维护,等微信钱包和 QQ 钱包恢复后就可以正常充值了。

4、用户购买道具过程中系统挂掉怎么办?

人工订正数据,达到最终一致性,礼包、优惠券等补偿。

5、用户在某个区服充值了点券,没同步到异地机房,购买不了商品怎么办?

等系统恢复就可以购买了。

6、用户在商城的订单数据未及时同步至异地机房,用户看不到订单详情怎么办?

等恢复后再处理。

六、架构图



发布于: 34 分钟前阅读数: 4
用户头像

felix

关注

还未添加个人签名 2018.09.08 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 模块七作业