架构实战 - 模块七
【作业内容】
王者荣耀商城异地多活架构设计
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构。
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例。
业务分析
业务功能
业务功能可分五大模块:
使用微信或者 QQ 账号登录游戏;
对战:例如匹配、排位、巅峰赛;
商城:购买英雄、皮肤、道具等;
活动:领取各种奖励和道具;
社区:各种攻略,视频等。
业务分级
王者荣耀的访问情况,登录>注册
商城的核心场景情况,点券>皮肤>道具
收入情况,点券充值>点券支付
综合考虑,在异地多活架构设计中,需要优先保障:登录、点券、皮肤、道具。
数据分类
登录
1.依赖 QQ 和微信账号授权登录,本身无需登录信息;
2.微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID;
3.王者荣耀只需要记录 RoleID 对应的区服信息,区服数据只会新增不会修改。
商品管理
1、商品 ID,包括英雄 ID、皮肤 ID、道具 ID,具有全局唯一性
2、商品库存,和商品 ID、订单 ID 绑定,根据商品和订单而动态变化,强一致性
3、商品信息,包括商品类型(英雄、皮肤、道具等)、价格、商品详情、销量、评价等
支付
1、RoleID:登录后就不会变了;
2、点券余额:和 RoleID 绑定,根据充值和购买商品而变化,数据不可丢失,强一致性
订单管理
订单 ID,全局唯一,不可重复,每次新增,不可丢失
数据同步
购买英雄
RoleID:同登录。
用户英雄 ID:每次新建,全局唯一,不会修改,用算法生成,数据库同步;
英雄数据:和用户英雄 ID 绑定,只会新建不会修改,数据库同步。
购买皮肤
RoleID:同登录。
用户皮肤 ID:每次新建,全局唯一,不会修改,用算法生成,数据库同步;
皮肤数据:和用户皮肤 ID 绑定,只会新建不会修改,数据库同步。
购买道具
RoleID:同登录。
用户道具 ID:每次新建,全局唯一,不会修改,用算法生成,数据库同步;
道具数据:和用户道具 ID 绑定,新建或者修改, 数据库同步
异常处理
微信、QQ 异常,用户无法登录:公告,系统停服维护。
点券充值异常:客诉,人工修正数据,恢复余额,适当补偿。
道具不及时:提示稍后重试,等待数据同步。
评论