架构实战营-模块七作业
作业:王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
分析王者荣耀商城的业务特点,设计其异地多活架构;
按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
用户买鲜花、改名卡之类的道具可以买多个;
分析步骤参考模块 7 第 6 课的案例。
1.商城业务特点
王者荣耀分 QQ 和微信两个分区,不区分 IOS 和 Andriod 客户端。
商城中的英雄、皮肤、鲜花、改名卡、金币、点券都独立存在于每个分区的小区,并不共享。
2.商城数据分类
英雄在区服各地域的的服务器是唯一
皮肤在区服各地域的的服务器是唯一
鲜花在区服各地域的的服务器最终一致
改名卡在区服各地域的的服务器最终一致
金币在区服各地域的的服务器最终一致
点券在区服各地域的的服务器最终一致
3.数据同步
补充:MOBA,RTS,射击游戏都需要极低的延迟,除非所有玩家都在同一个区域进行网络游戏,如果他们在不同的区域一般都会选择一个与各玩家距离都差不多的服务器进行联机,因此他们的商品和余额数据在各区域都是必须一致的。
业务限定了英雄、皮肤由于是全局唯一且强一致性,处理方法有二:
(1) 因此在英雄和皮肤的购买上必须保证保存在不同地区的服务器同时在线才能进行购买。
(2) 检查到该问题通过风控系统进行退换处理。
鲜花、改名卡、金币、点券,可以通过事务合并解决,不受某一个服务器宕机而影响。
4.异常处理
商品数据异常可以通过人工、机器检查修正或礼品补偿。
购买失败或者查看购买失败,怎么办?等系统恢复再购买。
数据未及时同步到异地机房,怎么办?等系统恢复再看。
评论