【模块七】王者荣耀商城异地多活架构设计
作业:王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例。
【关键业务约束】
用户登录后才能购买商品;
商城列出商品,用户选中后才能购买;
只能用点券购买商品;
余额不够不能购买商品。
一、业务分级
王者荣耀商城的商品是虚拟物品,不需要库存,也不需要物流运输。
用户要购买物品,需要先登录商城。
用户登录商城后,浏览商城物品,选择所需物品购买。商
城里的物品需要用点券支付,因此用户要先用微信钱包或者 QQ 钱包充值点券,或者点券还有余额。
因此商城要做异地多活,核心业务有:
登录,商品展示,充值,购买
二、数据分类
【登录】
依赖 QQ 和微信账号授权登录,本身无需登录信息;
微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID;
王者荣耀只需要记录 RoleID 对应的区服信息,区服数据只会新增不会修改。
【商品展示】
商品 ID: 全局唯一,不会修改。
【充值】
RoleID:登录后就不会变了;
充值订单 ID:每次新建,算法生成,全局唯一,不会修改;
用户点券余额:和 RoleID 绑定,全局强一致。
【购买】
RoleID:登录后就不会变了;
商品 ID: 全局唯一,不会修改;
购买订单 ID:每次新建,算法生成,全局唯一,不会修改;
用户点券余额:和 RoleID 绑定,全局强一致。
三、数据同步
【登录】
RoleID 和区服对应关系,只会新建不会修改,数据库同步即可。
【商品展示】
商品 ID 全局唯一,不会修改,数据库同步即可。
【充值】
RoleID:同登录;
充值订单 ID:每次新建,算法生成,全局唯一,不会修改,数据库同步即可;
用户点券余额:和 RoleID 绑定,全局强一致。
【购买】
RoleID:同登录;
商品 ID: 同商品展示;
购买订单 ID:每次新建,算法生成,全局唯一,不会修改,数据库同步即可;
用户点券余额:和 RoleID 绑定,全局强一致。
四、异常处理
【登录】
微信和 QQ 挂了怎么办?
直接挂公告:系统停服维护。
玩家在某个区服开了小号,没同步到异地机房,怎么办?
等系统恢复就可以玩了。
【商品展示】
没有商品信息,购买不了商品怎么办?
等系统恢复就可以了。
【充值】
微信钱包或者 QQ 钱包充值业务挂了怎么办?
直接挂公告,系统暂停充值
用户充值购买了点券,没同步到异地机房怎么办?
等系统恢复
【购买】
用户购买物品过程中系统挂了怎么办?
人工修正数据,如果数据异常,要补偿用户
用户在某个区服购买的商品未能及时同步到异地机房,怎么办?
等系统恢复就可以了。
评论