写点什么

模块七 作业

用户头像
CR
关注
发布于: 2 小时前

【背景】

假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。

【作业要求】

  • 分析王者荣耀商城的业务特点,设计其异地多活架构;

  • 按照模块 7 第 5 课的方法来设计异地多活架构。

【提示】

  • 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;

  • 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;

  • 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;

  • 用户买鲜花、改名卡之类的道具可以买多个;

  • 分析步骤参考模块 7 第 6 课的案例。


业务背景

2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。


【关键业务约束】

  1. 用户登录后才能使用商城系统;

  2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;

  3. 王者荣耀商城的物品主要包括碎片、英雄、皮肤、夺宝、礼物等虚拟物品,无需考虑库存和物流;

  4. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;

  5. 用户买鲜花、改名卡道具可以买多个。

业务分级

王者荣耀商城涉及核心业务:充值、购买英雄和皮肤、购买道具


数据分类

登录依赖 QQ 和微信账号授权的 RoleID,全局唯一,不会改变;

商品信息:修改较少,全局数据

点券:与用户 RoleID 关联,全局强一致

支付信息:以来 QQ 钱包和微信钱包

英雄和皮肤:每个用户只能买一个,强一致

道具:可多次购买,最终一致

数据同步

1、RoleID 和区服对应关系只会新增,不会修改,数据库同步即可

2、点券 ID 在上一步中根据 RoleID 和区服 ID 通过算法自动生成,全局唯一,无需同步

3、点券余额需要保证分布式一致性,使用数据库同步

4、点券充值记录只会新增,不会修改,使用数据库同步

5、订单 ID 每次新建,不会修改,通过数据库同步

6、订单信息每次新建,不会修改,通过数据库同步,同时由于包含全局唯一的订单 ID,也可通过消息队列同步

7、商品 ID 每次新建,全局唯一,不会修改,通过数据库同步

8、商品信息存在修改,通过数据库同步


异常处理

【点券充值】点券数量不对,或者未到账,客户介入,事后优惠券补偿

【购买】购买后没有同步到异地机房,玩家看不到买的东西,客服介入,给予适当补偿。


王者荣耀商城异地多活架构示意图


用户头像

CR

关注

还未添加个人签名 2018.09.23 加入

还未添加个人简介

评论

发布
暂无评论
模块七 作业