写点什么

架构训练营第 10 期模块 7 作业

作者:Geek_4db2d5
  • 2023-02-18
    辽宁
  • 本文字数:802 字

    阅读完需:约 3 分钟

作业要求:

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


业务背景:

根据华仔老师介绍, 王者荣耀游戏根据 2020 年 11 月数据, 全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。


设计步骤一:业务分级

根据分析, 游戏商城的业务包括登录,浏览商品, 充值, 购买商品等等,因为登录之前老师已经分析过,这里就不包含了。

那么我认为核心业务应该为, 游戏点券充值,购买商品道具这两个。

这里补充一下,老师提到过游戏商城和淘宝商城有不同之处。分析认为主要不同为,游戏商城都是虚拟物品, 所有没有库存数量之说, 或者库存数量是无限的, 所以用户购买后也无需更新库存数量。


设计步骤二:数据分类

充值

1.用户 RoleID,全局唯一,不可变

2.余额,全局强一致性

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

购买商品/道具

1.购买商品 ID(英雄/皮肤):强一致性, 不可重复

2.购买商品 ID(道具):最终一致性,可重复

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


注意这里商品分为两种, 一种是只能购买一次的商品,还有是可以重复购买的商品。


设计步骤三:数据同步

充值

1.用户 RoleID,全局唯一,不可变, 采用数据库同步+消息队列同步

2.余额,全局强一致性, 数据库同步

3.充值订单:每次新建,全局唯一,不会修改, 用算法生成, 数据库同步+消息队列同步

购买商品/道具

1.购买商品 ID(英雄/皮肤):强一致性, 不可重复, 数据库同步

2.购买商品 ID(道具):最终一致性,可重复, , 数据库同步+消息队列同步

3.购买订单:全局唯一,每次新建,不会修改, 用算法生成, 数据库同步+消息队列同步


设计步骤四:异常处理

  1. 因为微信钱包服务不可用导致充值故障?

告知用户,需要等待微信钱包服务恢复正常

  1. 充值成功,无法在别的区服使用,或者购买道具成功,无法在别的区服使用?

需要用户等待一段时间后,余额或者道具就会同步成功。

  1. 用户重复购买英雄皮肤类商品?

系统可以自动识别退款。

  1. 用户因为系统未同步而重复购买的道具类商品?

用户可发起退货流程。


异地多活架构图



用户头像

Geek_4db2d5

关注

还未添加个人签名 2021-10-07 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营第10期模块7作业_Geek_4db2d5_InfoQ写作社区