架构实战营 - 模块 7- 作业
作业内容
作业:王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1.
王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2.
用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3.
用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4.
用户买鲜花、改名卡之类的道具可以买多个;
5.
分析步骤参考模块 7 第 6 课的案例。
以下按照异地多活的步骤进行分析:
主要功能:
1. 对战:例如匹配、排位、巅峰赛;
2. 商城:购买英雄、皮肤、道具等;
3. 活动:领取各种奖励和道具;
4. 社区:各种攻略,视频等
约束条件:
1、用户登录后才能使用商城系统,使用微信号或者 QQ 登录系统;
2、用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3、用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4、商城中售卖的内容包括英雄、皮肤、礼物、特惠、夺宝、礼物等,均为虚拟物品,无需考虑库存和物流。
一、业务分级
王者荣耀分析 top3 的业务为:登录、对战、购买(商城)。
1、无法登录没有办法参与游戏
2、进行游戏最主要的目的就是对战体验。
3、游戏过程中需要购买英雄、皮肤礼物等虚拟商品。
二、数据分级
RoleID:不会改变,全局唯一;
商品信息类别:修改少,全局数据
支付关键数据: 支付本身依赖 QQ 钱包、微信;因为是企鹅产品,暂时不支持支付宝;
点券:和用户的 RoleID 关联,全局强一致性
商品库存:虚拟商品,没有库存的概念;
英雄和皮肤:和用户 RoleID 绑定,同一个 RoleID 只能购买一次。强一致性
鲜花、改名卡道具:和用户 RoleID 绑定,可以无限购买。强一致性。
三、数据同步
1、RoleID 和区服对应关系只会新增,不会修改,数据库同步即可
2、点券 ID 在上一步中根据 RoleID 和区服 ID 通过算法自动生成,全局唯一,无需同步
3、点券余额需要保证分布式一致性,使用数据库同步
4、点券充值记录只会新增,不会修改,使用数据库同步
5、订单 ID 每次新建,不会修改,通过数据库同步
6、订单信息每次新建,不会修改,通过数据库同步,同时由于包含全局唯一的订单 ID,也可通过消息队列同步
7、商品 ID 每次新建,全局唯一,不会修改,通过数据库同步
8、商品信息存在修改,通过数据库同步
四、异常处理
【登录】微信或者 QQ 登录异常,提示系统维护,暂无法使用,考虑微信和 QQ 的稳定性,此种状况出现概率较小。
【点券充值】点券数量不对,或者未到账,客户介入,事后优惠券补偿
【购买】购买后没有同步到异地机房,玩家看不到买的东西?->客服介入安抚用户,购买失败的话,给予适当补偿。
【活动】异地机房看不到活动,运营人员介入,手工同步。
评论