写点什么

架构实战营模块 7 课后作业

发布于: 2 小时前

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

【背景】

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


【作业要求】

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

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


【提示】

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

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

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

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

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


设计步骤 1 - 业务分级

这里我们主要是着重在商城的异地多活。

商城的功能主要是:购买英雄、皮肤、道具等

王者荣耀的商城是虚拟物品商城,和实物电商的差别是

1.没有库存 (没有卖完的概念)

2.自动发货,自动收货


商城相关的场景

充值点券

购买英雄、皮肤 (只能买一个)

购买其他道具(鲜花、改名卡之类)可以买多个

支付


设计步骤 2 - 数据分类

1.Role ID : 全局唯一,登录后就不会变了

2.点券余额 : 强一致性, 不可丢失,不可恢复

3.用户道具数量 :强一致性, 不可丢失,不可恢复


设计步骤 3 - 数据同步

1.Role ID:全局唯一,不可变,RoleID 和余额道具对应关系,只会新建不会修改,数据库同步即可。

2.点券余额:全局一致性,和 RoleID 绑定,采用数据库同步余额,充值只能在归属地充值;

3.用户道具数量 :全局一致性,和 RoleID 绑定,每一个区服同步,采用数据库同步;这个部分可以重用“区服服务器”的异地多活设计


设计步骤 4 - 异常处理

1.微信和 QQ 挂了怎么办?

直接挂公告:不允许充值。


2.用户充值了点券,但是余额显示不对,买不了道具

使用事务合并技巧,只要用户充值到超过想消费的数目,则继续处理用户的请求。


3.用户的点卷余额/道具数目不对

人工修复,实在不行,就给点卷/道具补偿


4.用户购买不了道具

等系统恢复再购买


异地多活架构示意图



用户头像

还未添加个人签名 2020.10.16 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块7课后作业