架构实战营模块 7 作业
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例。
业务分级
核心业务为登录、充值、商品购买
数据分类
登录
1. 依赖 QQ 和微信账号授权登录,本身无需登录信息;
2. 微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID;
3. 登录 sessionID
充值
1、点券余额:关联 RoleID ,全局强一致。
2、支付订单 id:全局唯一,只会增加,不修改,不可丢失
商品购买
RoleID:登录后就不会变了
商品信息:全局唯一,会修改商品详情
英雄和皮肤购买记录:购买记录全局唯一 id,新建后就不会修改,最终一致性
道具记录:可以有多个购买记录,不会修改,最终一致性
数据同步
Role ID: 全局唯一不可变,采用数据库同步 + 消息队列同步。
点券余额:全局强一致性,采用数据库同步余额,充值只能在归属地充值。
道具记录:最终一致性,采用数据库 + 消息队列同步。
英雄和皮肤记录:全局强一致性,同 RoleID 用户所在区服唯一,采用数据库同步。
商品信息:全局唯一,采用数据库同步 + 消息队列同步。
异常处理
登录异常:微信或 QQ 登录异常,发公告告知用户
充值异常:恢复后再充值
购买英雄、皮肤异常:恢复后再购买
评论