模块七 作业
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
分析王者荣耀商城的业务特点,设计其异地多活架构;
按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
用户买鲜花、改名卡之类的道具可以买多个;
分析步骤参考模块 7 第 6 课的案例。
业务背景
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
【关键业务约束】
用户登录后才能使用商城系统;
用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
王者荣耀商城的物品主要包括碎片、英雄、皮肤、夺宝、礼物等虚拟物品,无需考虑库存和物流;
用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
用户买鲜花、改名卡道具可以买多个。
业务分级
王者荣耀商城涉及核心业务:充值、购买英雄和皮肤、购买道具
数据分类
登录依赖 QQ 和微信账号授权的 RoleID,全局唯一,不会改变;
商品信息:修改较少,全局数据
点券:与用户 RoleID 关联,全局强一致
支付信息:以来 QQ 钱包和微信钱包
英雄和皮肤:每个用户只能买一个,强一致
道具:可多次购买,最终一致
数据同步
1、RoleID 和区服对应关系只会新增,不会修改,数据库同步即可
2、点券 ID 在上一步中根据 RoleID 和区服 ID 通过算法自动生成,全局唯一,无需同步
3、点券余额需要保证分布式一致性,使用数据库同步
4、点券充值记录只会新增,不会修改,使用数据库同步
5、订单 ID 每次新建,不会修改,通过数据库同步
6、订单信息每次新建,不会修改,通过数据库同步,同时由于包含全局唯一的订单 ID,也可通过消息队列同步
7、商品 ID 每次新建,全局唯一,不会修改,通过数据库同步
8、商品信息存在修改,通过数据库同步
异常处理
【点券充值】点券数量不对,或者未到账,客户介入,事后优惠券补偿
【购买】购买后没有同步到异地机房,玩家看不到买的东西,客服介入,给予适当补偿。
评论