架构师实战营王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例。
注: 根据本人自身玩王者荣耀的心态来分析业务。
1、业务分级
账户点卷、英雄、皮肤、英雄碎片、皮肤碎片、道具、心愿单、星元、活动、视频等
顺序:
1) 账户
2)活动
3)英雄皮肤道具等
4)星元
5)心愿单
2、数据分类
1)账户余额点卷:用户全局唯一 ID,全局强一致性。不可丢失
2)活动:每一个活动都有全局唯一 ID,不可重复,每次算法生成;
3)英雄皮肤随便道具等: 每一个英雄和皮肤道具都具有全局唯一 ID,不可重复,每次算法生成。
4)星元,心愿单:全局唯一 ID,不可重复,最终一致性。
3、数据同步
1)账户余额点卷:全局一致性,采用数据库同步余额;
2)活动: 强一致性,确保多处上线成功,所以使用数据库主库复制
3)英雄皮肤随便道具等:英雄皮肤上线后很少变化,采用数据库同步+消息队列同步;
4)星元,心愿单:上线后很少变化,心愿单很少使用,采用数据库同步+消息队列同步;
4、异常处理
1)如果某一个城市出现故障导致英雄皮肤随便道具等出现异常情况,数据更新不同步,用户查看背包少了一点商品。可以适当的给这一部分用户给出一些补偿道具。对游戏影响不大。可容忍
2)用户充值后出现异常情况,可人工根据充值记录恢复。可容忍
3)用户在消费点卷后买英雄皮肤等道具后出现扣点卷没有给任何道具时,可人工审核后给用户恢复。可容忍
评论