架构训练营模块七作业
王者荣耀商城异地多活架构设计
一、设计步骤
1.1、业务分级
王者荣耀的 Top3 业务按照顺序是登录、对战、商城;
1.2、数据分类
王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,我觉得两个很大区别是:
1、库存只要最终一致性就可以,毕竟不是实体商品,系统可以按照规则调整商品库存数量;2、商品是可恢复的,由系统生成的,不像实体电商商品一旦丢失是没法恢复的;
商品 ID:为了确保同样的英雄和皮肤只能买 1 个,商品 ID 都设置成全局唯一的
库存数据:最终一致性,但是数据可丢失且是可恢复的
点券:强一致性,数据不可丢失
1.3、数据同步
商品 ID:全局唯一,不会修改,数据库同步即可;
库存数据:数据是可恢复的,数据库同步即可;
点券:要保证强一致性,数据库同步+ 消息队列同步;
1.4、异常处理
1、库存未及时同步到异地机房,库存数据异常怎么办?
王者荣耀商品毕竟是虚拟商品,首先还是确保用户可以正常购买,先确保可用,保证数据最终一致性;如果最终库存和购买出现偏差,可以通过礼物或者其他方式,最差的就是运营策略去调整规则调整库存;
2、点券数额可能为及时同步到异地机房,用户要购买商品怎么办?
点券数额必须保证强一致性,在用户体验上做一些增强,提示支付正在处理,实时改异步操作;
二、王者荣耀商城异地多活架构示意图
异地多活架构示意图如下:
版权声明: 本文为 InfoQ 作者【Neil43】的原创文章。
原文链接:【http://xie.infoq.cn/article/2ca012eceeeaf95bfbf78dddb】。文章转载请联系作者。
评论