模块七作业
作业:王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例。
1.业务分析
商城的业务组成:
(1) 虚拟商品信息
(2) 微信钱包或 QQ 钱包充值点券;
(3) 使用点券购买英雄、皮肤、道具等虚拟登录、充值、交易商品。商品;
虚拟商品业务特征:
(1) 无实物关联,不涉及仓储,物流等业务;
(2) 支付成功后,商品可立即到用户账户;
(3) 虚拟商品,库存管理较灵活,也可以不做库存的管理
2.业务约束
依赖微信钱包和 QQ 钱包充值点劵,商城用点劵支付
用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买
用户买鲜花、改名卡之类的道具可以买多个;
3.数据分类
关于用户和账户信息,直接沿用之前的登录业务模块中的实现即可:
1. 依赖 QQ 和微信账号授权登录,本身无需登录信息;
2. 微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID;
3. 王者荣耀只需要用 RoleID 关联用户信息,点券账户,交易记录等信息;
商品:
1. 通过运营后管理系统,创建出一些商品,一旦商品信息创建之后,改动频率不高;商品信息可以在不同的分区之间进行同步即可,库存可以不用设置;
充值:
1. 进入商城后,通过唤醒微信钱包或 QQ 钱包充值点券,充值的点券直接写入对应 RoleId 的账户信息中
交易:
1. 购买完成后,可以根据 RoleID 查询拥有的商品信息和交易记录。商城只需要记录 RoleID,对应的商品信息和交易记录
关键数据构成:
RoleID:登录后就不会变了;
虚拟商品:创建后,基本不变
用户点券:和 RoleID 绑定,会变动,由充值和交易会引起变动
用户购买虚拟商品:和 RoleID 绑定,购买后,不会再变动
交易记录:和 RoleID 绑定,交易产生记录后,不会在变动
4.数据同步
RoleID ,只会新建不会修改,数据库同步即可。
【虚拟商品】
商品信息,新建和修改不频繁,只在一个机房内进行数据修改即可,数据同步即可。
【用户点券】
全局强一致性,数据同步即可,同一个用户只路由到一个机房内,在一个机房内进行充值处理,处理完的数据同步到另一个机房。
【用户英雄 &皮肤】
英雄和皮肤只能购买一次,因此需要全局强一致性,在一个机房内进行充值处理,处理完的数据同步到另一个机房
【用户其他道具】
其他道具可以购买多次,因此没有太强一致性要求,可以直接采用数据同步
5.异常处理
【登录】
1. 微信和 QQ 挂了怎么办?
直接挂公告:系统停服维护。
【商品】
1. 不能维护商品信息怎么办?
暂时先不新建和修改,等商品运营管理服务恢复后,在来维护商品信息
【充值点券】
1. 不能充值点券怎么办?
直接挂公告:系统停服维护。
2. 充值的点券不到账怎么办?
进行人工补偿处理
评论