架构实战营模块七课后作业
王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例。
业务背景
【业务数据】
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
【业务功能】
1 使用微信或者 QQ 账号登录游戏;
2 对战:例如匹配、排位、巅峰赛;
3 商城:购买英雄、皮肤、道具等;
4 活动:领取各种奖励和道具;
5 社区:各种攻略,视频等。
【关键业务约束】
1 用户登录后才能使用商城系统;
2 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3 王者荣耀商城的物品主要包括碎片、英雄、皮肤、夺宝、礼物、特惠、夺宝等,和淘宝这种实物电 4 商的主要区别是均为虚拟物品,无需考虑库存和物流;
5 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
6 用户买鲜花、改名卡之类的道具可以买多个
业务分级
王者荣耀众多业务里面,TOP3 的业务是登录,对战,商城。本作业主要针对商城来分析
数据分析
1 依赖微信 QQ 账号登录,本身无需登录
2 微信 QQ 登录后,返回唯一 roleID,只认这个唯一 roleID.
3 登录游戏服后,增加游戏服 ID2,数据只增不减
4 充值管理由微信钱包与 QQ 钱包实现,王者荣耀需要在点券 ID 下保存充值记录,该记录只会新增,不会修改。
5 创建商品,商品 ID 唯一,自增,不会减少
6 创建订单,订单 ID 唯一,自增,不会减少
数据同步
1 商品数据:不一致容忍度较高,数据可反复同步,可采用消息队列同步
2 库存数据:虚拟商品,无限量供应的商品,无需考虑数据一致性,限量的允许超卖、可采用库存拆分到不同机房、数据库同步
3 订单数据:可采用数据库同步、消息队列同步
4 点券支付:可采用数据库同步
异常处理
1. 登录异常,可以容忍。公告通知即可
2. 支付通道异常,可以容忍。公告通知即可
3. 支付数据未同步。等同步后再核减即可
4. 订单未同步。同步后再查看。
异地多活架构示意图
评论