模块七作业
作业:王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例
1. 业务分级
充值,购买商品
2. 数据分类
【充值】
1.用户 ID:全局唯一,不可变,由 QQ 或微信登陆后返回;
2.区服信息:只需要记录用户对应的区服信息,区服信息只会新增不会修改;
3.点券余额:全局强一致性。
【购买商品】
1.用户 ID:全局唯一,不可变,由 QQ 或微信登陆后返回;
2.区服信息:只需要记录用户对应的区服信息,区服信息只会新增不会修改;
3.点券余额:全局强一致性;
4.英雄与皮肤数据:同一英雄与皮肤在同一个区服内不可重复,全局强一致性;
5.其他道具:可以买多个,最终一致性。
3. 数据同步
【充值】
1.用户 ID:只会新建不会修改,数据库同步+消息队列;
2.区服信息:只会新建不会修改,数据库同步+消息队列;
3.点券余额:全局一致性,采用数据库同步余额,充值只能在归属地充值。
【购买商品】
1.用户 ID:只会新建不会修改,数据库同步+消息队列;
2.区服信息:只会新建不会修改,数据库同步+消息队列;
3.点券余额:全局一致性,采用数据库同步余额,余额扣除只能在归属地充值。
4.英雄与皮肤数据:全局一致性,采用数据库同步,购买只能在归属地服务器操作。
5.其他道具:最终一致性,采用数据库同步+消息队列。
4. 异常处理
【充值】
1.QQ 服务器故障或微信服务器故障导致无法充值,怎么办?
如果 QQ 服务器故障,可以使用微信充值。如果微信服务器故障,可以使用 QQ 充值。如果同时故障可以提示【暂时无法充值】,等待恢复后再充值。
2.充值过程中,微信余额已经被扣除,但是点券没有增加,怎么办?
联系王者荣耀客服介入,补齐丢失的点券,并且可以发放小道具补偿。
【购买商品】
1.购买了英雄或者皮肤,但是由于未同步至异地服务器,导致无法使用,怎么办?
可以等待同步完成后再使用。
2.购买鲜花,但是到账的数量与实际购买的数量不一致,怎么办?
联系客服解决处理,可以通过发放鲜花,或者修改鲜花数量来解决。
5. 王者荣耀异地多活架构示意图
版权声明: 本文为 InfoQ 作者【VE】的原创文章。
原文链接:【http://xie.infoq.cn/article/e7462025706dea2743ba8643d】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论