写点什么

王者荣耀商城异地多活架构

作者:intelamd
  • 2022 年 7 月 20 日
  • 本文字数:982 字

    阅读完需:约 3 分钟

业务分级

业务特点
  1. 虚拟商品,没有库存限制

  2. 虚拟商品没有实物,可以算近乎 0 成本,即使出现故障导致多发放了也并不会真正产生损失;

  3. 履约售后简单,兑换商品后基本不能修改


业务场景

王者荣耀商城主要有如下场景:用户登录、商品上下架、用户充值、用户兑换商品

商城的主要业务就是用户充值并购买,这是主要收入来源,同时只有登录用户才能购买;

兑换商品时必须要获得商品信息,所以商品模块也是核心模块,要做异地多活;

所以综合来看核心场景如下:用户登录、用户充值、用户兑换商品


数据分类

【用户登录】

同对战案例,此处不赘述了


【用户充值】

用户账户 ID:可以同用户 ID,登录后就不会变;

账户点券余额数据:全局强一致性,不可丢失

充值记录 ID:每次新建,全局唯一,不会修改;

充值记录:最终一致、不会修改;


【用户兑换商品】

兑换记录 ID:每次新建,全局唯一,不会修改;

兑换记录:最终一致、不会修改;

商品数据:最终一致性;可以丢失;可恢复,运营重发


数据同步

【用户登录】

同对战案例,此处不赘述了


【用户充值】

用户账户 ID:全局唯一,不可变,登录场景已包含;

账户余额:全局一致性,数据库同步;

充值记录 ID:全局唯一,不可重复,数据库同步+消息队列同步;

充值记录:不可修改,跟随充值记录 ID,数据库同步+消息队列同步;


【用户兑换商品】

兑换记录 ID:全局唯一,不可重复,数据库同步+消息队列同步

兑换记录:不可修改,跟随兑换记录 ID,数据库同步+消息队列同步;

商品数据:可以丢失,可以恢复,商品 ID 全局唯一,数据库同步+消息队列;

异常处理

【用户登录】

同对战分析,此处不赘述。

【用户充值】

  1. 微信支付挂了:只能等待微信恢复;

  2. 用户在支付的时候某机房挂了:重新发起支付即可,会自动切换到可用机房

  3. 充值后余额同步延迟较高:用户余额不足无法购买,需要等待一段时间才能购买,不影响对战;如果用户投诉可以适当补偿

【用户兑换商品】

  1. 兑换记录同步延迟较高,导致英雄和皮肤多买了:可以等系统恢复后进行退款、撤销,根据情况进行适当点券补偿

  2. 兑换过程中某机房挂了:重启发起兑换,会自动切换到可用机房

  3. 新发布商品系统同步延迟较高:短暂看不到新发布商品,影响不大;

  4. 某机房兑换后挂了,但是余额扣减数据未同步到另外机房:可能导致用户切换到另外机房发现余额未变化,继续购买导致多发放,这种情况如一开始分析,因虚拟商品几乎 0 成本,偶尔出现问题也不会产生真正损失,可以不用回收,给用户保留


异地多活架构图


发布于: 刚刚阅读数: 4
用户头像

intelamd

关注

还未添加个人签名 2018.06.25 加入

还未添加个人简介

评论

发布
暂无评论
王者荣耀商城异地多活架构_intelamd_InfoQ写作社区