模块 7 作业 - 王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1.分析王者荣耀商城的业务特点,设计其异地多活架构;
【提示】
1.王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2.用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3.用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4.用户买鲜花、改名卡之类的道具可以买多个;
一、业务分级
核心业务;登录、充值、购买(英雄和皮肤)
二、数据分类
【登录】
1.依赖 QQ 和微信账号授权登录,本身无需登录信息;
2.微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID;
3.王者荣耀只需要记录 RoleID 对应的区服信息,区服数据只会新增不会修改。
【充值】
1. RoleID:登录后就不会变了。
2. 充值订单 ID:全局唯一,不可重复,每次算法生成。
3. 点券余额:全局一致性,采用数据库同步余额,充值只能在归属地充值;
【购买】
1. RoleID:登录后就不会变了。
2. 购买订单 ID:全局唯一,不可重复,每次算法生成。
3. 英雄和皮肤的商品 ID:全局唯一,不可重复,算法生成。
三、数据同步
【登录】
1. RoleID 和区服对应关系,只会新建不会修改,数据库同步即可。
【充值】
1. RoleID:同登录;
2.充值订单 ID:每次新建,全局唯一,不会修改,用算法生成,数据库同步即可;
3.点券余额:全局一致性,采用数据库同步余额,充值只能在归属地充值;
【购买】
1. RoleID:同登录;
2.购买订单 ID:每次新建,全局唯一,不会修改,用算法生成,数据库同步即可;
3.英雄和皮肤的商品 ID:全局一致性,不会修改,数据库同步即可;
四、异常处理
【登录】
1.微信和 QQ 挂了怎么办?
直接挂公告:系统停服维护。
【充值】
1. 充值服务挂了怎么办?
直接挂公告:系统停服维护。
2. 充值过程中,服务异常怎么办?
系统提示:支付核对中。人工订正数据,达到最终一致性;
3. 点券余额没有同步到异地机房,用户看不到怎么办?
等恢复了再看。
【购买】
1.购买服务挂了怎么办?
直接挂公告:系统停服维护。
2.购买过程中,服务异常怎么办?
系统提示:购买核对中。人工订正数据,达到最终一致性;
3.用户异地机房点券余额不够,用户无法购买怎么办?
业务上放松一部分约束,允许一定额度的欠费。
五、架构示意图
版权声明: 本文为 InfoQ 作者【卡西毛豆静爸】的原创文章。
原文链接:【http://xie.infoq.cn/article/7329632134d1314adfd748305】。文章转载请联系作者。
评论