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