王者荣耀商城异地多活架构设计
业务背景
业务数据
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
业务功能
点券充值
商品浏览
通过点券购买商品
限制购买次数
购买记录
关键业务约束
英雄和皮肤只能购买一次
已有英雄和皮肤即时为购买过也不能购买
必须先充值点券才能购买
业务分级
商品预览 > 下单 > 点券充值 > 购买记录
分级原因:只有看到商品才会发起购买,并不是每次下单前都会充值,可以使用已有的点券购买,下单不可用充值了也没用,所以下单优先级要高于充值。
数据分类
商品信息:添加之后基本不会修改
订单信息:交易完成之后不会修改
充值信息:交易完成之后不会修改
点券余额:会变动
数据同步
商品信息:主库修改,数据库+消息队列同步,最终一致
订单信息:根据用户交易时固定机房,交易完成后数据库+消息队列同步,最终一致
充值信息:根据用户充值时固定机房生成订单号,回调根据订单号路由到固定机房,充值完成后充值记录数据库+消息队列同步,最终一致
点券余额:根据用户固定机房操作,变动之后数据库+消息队列同步,最终一致
异常处理
1、商品新增和修改为即时同步到其他机房
可接收延迟看到商品信息
2、订单记录未即时同步到其他机房
回调和处理过程根据用户路由到固定机房,查看可以接收一定的延迟,因为一般用户看到购买的商品已在包裹中是不会去看订单的
3、充值记录未即时同步到其他机房
回调和处理过程根据用户路由到固定机房,查看可以接收一定的延迟,因为用户看到点券增加了一般是不会去看充值记录的
4、点券余额未即时同步到其他机房
根据用户路由到固定机房读取
架构示意图
商品服务的修改只要北方机房操作,同步到南方机房,订单和点券根据用户路由到固定机房操作
评论