写点什么

模块七作业

作者:Ryan
  • 2023-02-18
    北京
  • 本文字数:998 字

    阅读完需:约 3 分钟

【作业题目】

作业:王者荣耀商城异地多活架构设计

【背景】

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

【作业要求】

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

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

【提示】

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

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

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

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


(本次作业总耗时:40 min)

思路分析

根据异地多活设计流程(业务分级、数据分类、数据同步、异常处理),此处业务分级已确定,即对商城做异地多活,接下来依次进行后续三个步骤

数据分类

对商城中的多个业务场景,依次分析各业务的数据情况

【充值】

  • 点券:强一致


【查看商城】

  • 已拥有物品:只新增不更新,强一致,全局唯一

  • 商品全集:极少更新,很少新增,数据量不大,一致性弱,全局唯一,可恢复

两者之差即为可购买商品


【购买物品】

  • 消费记录:最终一致,全局唯一

  • 点券:强一致


【查看已买物品】

  • RoleID:全局唯一,不可变

  • 已拥有物品:只新增不更新,强一致,全局唯一


数据同步

  • 点券:数据库主从同步,充值、消费只能在归属地

  • 已拥有物品:数据库主从同步,新增只能在归属地

  • 商品全集:主主同步

  • 消费记录:唯一标识用算法生成,使用数据库同步 + MQ 同步

  • RoleID:数据库同步 + MQ 同步


异常处理

1、在一个机房新增商品后宕机了,另一个机房查不到或者查到的数据不是新的

无所谓,用户也不知道有更新。此时用户用旧价格买了商品,少花了或者多花了点卷都可以

如果用户觉得多花了不乐意,可以通过核对消费记录进行修复,给用户退多余的点卷


2、刚用点券在一个机房买了皮肤,机房宕机了,另一个机房查不到新皮肤

无所谓,告诉用户发货有延迟,等一等即可


3、刚消费了一波,机房宕机导致查不到刚才的消费记录了

无所谓,等机房恢复了就能看到了



王者荣耀商城和电商商城的两大区别:

  • 虚拟商城的物品都是虚拟的,多发或者白送都没有直接经济损失,只是数据的修改而已;而电商商城一定不能超卖,一旦卖多了,取消发货会影响用户体验,继续发货则会亏钱,都不合适;

  • 电商的物品有订单,订单中包含该订单的商品信息,没办法看所有买过的商品;虚拟商城中订单比较简单,购买后的全部商品直接能看到

  • 虚拟商城有点券的概念,电商没有点卷,直接用钱结账

发布于: 刚刚阅读数: 3
用户头像

Ryan

关注

还未添加个人签名 2018-09-27 加入

还未添加个人简介

评论

发布
暂无评论
模块七作业_架构_Ryan_InfoQ写作社区