写点什么

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

用户头像
TH
关注
发布于: 1 小时前

【背景】

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


【作业要求】

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

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


业务背景

王者荣耀手游在 2020.11 月公布的数据显示,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。

业务功能

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

2. 对战:例如匹配、排位、巅峰赛;

3. 商城:购买英雄、皮肤、道具等;

4. 活动:领取各种奖励和道具;

5. 社区:各种攻略,视频等。

关键业务约束

用户登录后才能使用商城系统;

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

商城中售卖的内容包括英雄、皮肤、礼物、特惠、夺宝、礼物等,均为虚拟物品,无需考虑库存和物流;

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

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

业务分级

王者荣耀手游中各类业务按重要性排序,最重要的前三个业务为登录、对战、商城,以下针对商城业务进行异地多活架构设计。

数据分类

  • RoleID:全局唯一的用户身份标识,由微信或 QQ 登录后返回的结果通过算法生成;王者荣耀只记录 RoleID 对应的区服信息,区服只新增,不修改

  • 点券 ID:用户新进一个区服时,就会在用户 RoleID 下该区服中创建点券,该 ID 全局唯一,不会修改,不同区服点券相互独立

  • 点券余额:和点券 ID 绑定

  • 点券充值记录:点券的充值过程由微信钱包或 QQ 钱包管理,王者荣耀内需要在点券 ID 下保存充值记录,该记录只会新增,不会修改

  • 订单 ID:订单 ID 和点券 ID 绑定,每次新建,全局唯一,不会修改

  • 订单信息:订单信息包括订单 ID、商品 ID,购买数量,花费点券,由于虚拟商品实时交易,因此不需要记录订单状态,订单信息只会新建,不会修改

  • 商品 ID:新增商品时自动生成,全局唯一,不会修改

  • 商品信息:包括商品的名称、类型、描述、可购买数量等,与商品 ID 绑定


(备注:RoleID 当前所持有的英雄、皮肤、道具及其剩余数量、有效期等信息属于用户中心子系统的范畴,不纳入商城系统考虑)

数据同步

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

  • 点券 ID 在上一步中根据 RoleID 和区服 ID 通过算法自动生成,全局唯一,无需同步

  • 点券余额需要保证分布式一致性,使用数据库同步

  • 点券充值记录只会新增,不会修改,使用数据库同步(备注:也可以为每条充值记录生成全局唯一 ID,使用消息队列同步,通过 ID 确保幂等性)

  • 订单 ID 每次新建,不会修改,通过数据库同步

  • 订单信息每次新建,不会修改,通过数据库同步,同时由于包含全局唯一的订单 ID,也可通过消息队列同步

  • 商品 ID 每次新建,全局唯一,不会修改,通过数据库同步

  • 商品信息存在修改,通过数据库同步

异常处理

  • QQ 钱包或微信钱包挂了怎么办?

直接挂公告暂停点券充值,待钱包系统恢复


  • 充值扣费后系统挂了,没同步到异地机房,用户在异地登录无法消费怎么办?

等待系统恢复后再使用;另外,可以约束充值记录同步成功后再同步余额,这样用户在异地机房登录,未看到最新的充值记录,也就知道数据还没通不过来,而充值记录同步成功、余额同步失败的情况下,则可以考虑直接使用充值记录计算出余额


  • 用户购买商品时系统挂了,订单未同步到异地机房,用户异地登录无法使用所购商品怎么办?

等待系统恢复,用户可参考最新订单记录获知同步状况


  • 订单已同步,但用户中心中的可用商品未同步,用户无法使用商品怎么办?

此时用户已经能看到最新订单,但却没有得到相应商品,同时由于有的商品只能持有 1 份,因此也不能在异地机房重复下单,此时可以考虑通过订单信息更新用户中心内可用商品,先让用户使用,后续人工进行同步核查,也可以简单地等待系统恢复后再使用


  • 新增或修改商品信息后未同步到异地机房,导致用户无法购买怎么办?

新增商品情况下,由于商品 ID 全局唯一,无法在异地机房重复创建,因此只能等待系统恢复,运营需要对用户进行补偿

修改商品情况下,运营可以直接到异地机房进行修改,根据修改的时间戳忽略未同步成功的修改


发布于: 1 小时前阅读数: 4
用户头像

TH

关注

还未添加个人签名 2018.02.13 加入

还未添加个人简介

评论

发布
暂无评论
模块7作业 王者荣耀商城异地多活架构设计