架构实战营模块七作业
王者荣耀商城异地多活架构设计
原理
CAP 只能同时满足两个,AP。遵循 BASE 理论,出现短暂的不一致,业务上可接受,满足最终一致性。
原则
只保证核心业务:不同业务的数据特征不同,无法全部异地多活。
只能做到最终一致性:复制肯定有时间窗,会有短暂不一致状态。
只能保证绝大多数用户。
业务分析
登录:使用微信或 QQ 返回的 roleId,与区服关联
注册:用户只有注册了账户才能登录游戏商城
下单:使用点券购买商品
商品:英雄和皮肤只能买一个,不能重复购买;鲜花、改名卡之类道具可以买多个;数据修改的频率低。
与淘宝等商城区别:游戏商城商品是虚拟物品,对数据的高可用要求很高;没有退货业务,没有库存业务。
业务分级
登录和下单最重要,不能登录,就不能买商品;不能下单也不能购买商品。
数据分类
登录使用微信或 QQ 返回的 roleId,与区服关联,而区服只新增,不会修改,数据库同步。
下单使用 roleId 关联商品 id、商品数量生产订单,只新增,不会修改,数据库同步。
异常处理
微信或 QQ 不可用
直接挂公告,系统停服维护;
玩家在某区服注册账户,切换中心后,没有了
等系统恢复了就能看到了;
下单后系统挂掉,买到的商品没了
等系统恢复后就能看到,如果不能恢复,则补偿用户;
在主买了英雄和皮肤,切换后,发现没有购买,用户再次购买,主中心恢复后,英雄和皮肤重复
帮用户去重
评论