架构实战 - 模块 7 作业
作业
作业:王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例
内容
业务分级
王者荣耀商城主要业务包括:登录,充值点劵,购买(英雄和皮肤,道具)。其中核心业务就是登录,买英雄和皮肤,买道具。
充值点劵虽然也重要但相比较来说对用户的影响没有那么大。
数据分类
虚拟物品商城和实物电商第一个区别是商品没有库存限制,可以无限出售;第二个区别是下单即生效,没有物流过程。
【登录】
RoleID:登录后就不会变了
【购买】
RoleID:登录后就不会变了
订单 ID:每次新建,全局唯一,不会修改
商品(包括道具,英雄,皮肤)ID:订单只需要记录商品 ID,商品 ID 只会新增不会修改。每个 RoleID 只能绑定不同的英雄或皮肤的商品 ID,相同的英雄或皮肤的商品 ID 只能绑定一次;而道具商品可以随意绑定没有限制。
点劵余额:全局强一致性
数据同步
【登录】
RoleID 和区服对应关系,只会新建不会修改,数据库同步即可。
【购买】
RoleID:同登录
订单 ID:每次新建,全局唯一,不会修改,用算法生成,数据库同步即可
商品 ID:全局唯一,很少变,采用数据库同步 + 消息队列同步
点劵余额:全局一致性,采用数据库同步余额,充值只能在归属地充值
异常处理
【登录】
1. 微信和 QQ 挂了怎么办? 直接挂公告:系统停服维护。
2. 玩家在某个区服开了小号,没同步到异地机房,登录不了商城怎么办? 等系统恢复就可以进入商城
【购买】
1. 用户购买过程中系统挂掉怎么办?如果未扣除点劵点数,用户重新购买;如果已经扣除点劵但未得到商品,联系客服恢复点劵点数。
用户点劵数量小于商品需要的点数怎么办? 不能购买,充值点劵之后再来购买。
用户购买完成,商品未收到怎么办?重新登录刷新,仍未得到,联系客户解决,或兑换其他礼物。
评论