架构训练营 - 模块 7 作业
王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例。
虚拟物品商场和淘宝这种实物商城的差别?
虚拟物品数量无限制,可以无限生成;
虚拟物品购买后实时到账,不存在快递的时间差;
点券直接作为一个数字存储在系统里, 和实际货币解绑定。
业务限制
用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
用户买鲜花、改名卡之类的道具可以买多个;
数据分类
点券
:和 RoleID+区服绑定,全局强一致性用户购买的商品
:和 RoleID+区服绑定,全局强一致性订单 ID
:每次新建,全局唯一,不会修改;订单
:和订单 ID 绑定,只会新建不会修改,订单中包含 RoleID、区服和购买物品。
数据同步
点券
:全局一致性,采用数据库同步,充值只能在归属地充值;用户购买的商品
:全局一致性,采用数据库同步;订单ID
:全局唯一,不可重复,每次新增 ,不同步,每次创建的时候用算法生成。订单
:和订单 ID 绑定,不会修改,数据库主主同步即可。
异常处理
无法充值点券怎么办?
等待系统恢复。
重复购买英雄和皮肤怎么办?
集群恢复之后,退还用户购买的点券。
重复购买鲜花和改名卡怎么办?
承担购买结果,不需要用户退还点券。
评论