写点什么

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

作者:唐尤华
  • 2022 年 3 月 26 日
  • 本文字数:1545 字

    阅读完需:约 5 分钟

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

设计思路:

1. 分析业务特点:虚拟物品商城,出现问题对游戏主要业务、成交量无显著影响。

2. 异地多活架构:

  • 属于业务定制型异地多活架构。

  • 按照业务分级、数据分类、数据同步、异常处理四个步骤完成异地多活架构图。

业务特点


王者荣耀商城(App)

王者荣耀商城有以下几个特点:


  • 用户量大、商城交易为非频繁操作:

  • 用户量大:2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。

  • 日常交易:相比登录、对战业务,即使出现问题,对业务的影响不会特别大。

  • 活动促销:某个特定英雄或皮肤秒杀。

  • 交易模式与商品特点:

  • 先调用微信钱包或者 QQ 钱包充值点券,再用点券支付。

  • 交易物品是虚拟物品,不涉及物流等环节。

  • 货品交易规则:

  • 部分虚拟物品只能买一个,不能重复购买,例如英雄和皮肤。

  • 购买的物品不能跨区使用。

  • 换区后商品需要重新购买。

  • 支持商城购买后赠送。


参考王者荣耀买的英雄可跨区吗

业务定制型异地多活架构

设计步骤 1 - 业务分级

如下商城业务(不含注册登录)中,异地多活应该保证哪个或者哪几个核心业务?

  • 点券充值、商品购买、赠礼、夺宝。

答案:点券充值、商品购买。


点券购买界面

分析:点券购买是主要收入,业务重要性高。


英雄、皮肤购买

分析:商品购买中,英雄与皮肤是重要的虚拟资产,业务重要性高。


赠礼

分析:赠礼属于商城中带有社交属性的非核心功能。


夺宝

分析:夺宝属于业务促销与活动,非核心功能。

设计步骤 2 - 数据分类

【点券充值】

  1. 用户 RoleID:全局唯一,不可变;

  2. 交易 ID:每次新建,区服唯一,不会修改;

  3. 交易数据:和交易 ID 绑定,只会新建不会修改,例如点券 ID、充值点券数量等。

  4. 点券余额:区服强一致性


【商品购买】

  1. 用户 RoleID:全局唯一,不可变;

  2. 交易 ID:每次新建,区服唯一,不会修改;

  3. 交易数据:和交易 ID 绑定,只会新建不会修改,例如商品 ID、商品数量等。

  • 不能重复购买商品:区服唯一,例如英雄和皮肤只能买 1 个。

  • 可重复购买商品:可重复增加,例如鲜花、改名卡之类的道具。

设计步骤 3 - 数据同步

【点券充值】

  1. 交易 ID:区服唯一,采用数据库同步充值记录。

  2. 点券余额:区服强一致性,采用数据库点券余额,充值只能在归属地充值。


【商品购买】

  1. 交易 ID:区服唯一,采用数据库同步商品交易记录。

  2. 用户虚拟资产:

  • 不能重复购买商品:区服唯一,很少变,采用数据库同步。

  • 可重复购买商品:区服唯一,很少变,采用数据库同步。

设计步骤 4 - 异常处理

【点券充值】

  1. 点券充值服务挂掉怎么办?答:直接挂公告:充值功能维护,待恢复后进行充值。

  2. 充值过程中服务挂掉怎么办?答:维护异常订单,为玩家提供虚拟物品作为弥补损失。

  3. 充值结果未同步到异地机房,看不到怎么办?答:等恢复了再看。


【商品购买】

  1. 商品购买结果异常该怎么办?例如:

  • 点券消耗之后,购买皮肤暂未到账;

  • 点券购买道具后出现重复扣款;

  • 优惠券使用异常,没有正常产生折扣;

  • 点券消耗后,荣耀积分未到账;

  • 魔法球系统奖励异常。


答:维护异常订单,为玩家提供虚拟物品作为弥补损失,例如奖励玩家们 5 个皮肤碎片以及 100 荣耀积分等(王者荣耀点券没了怎么回事?)。


  1. 商品购买数据未同步到异地机房,看不到怎么办?答:等恢复了再看。

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

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


设计中的思考:


【正常情况】

比如用户在北方充值,在北方机房商城服务器完成交易,交易后的结果存到 22 区主库,同步到南方机房 22 区备用存储。


【异常情况】


比如用户在北方充值,充值完成,北方机房停电,数据未同步到南方机房。异地多活切换到南方机房。


  1. 用户在商城中查询余额,发现充值成功点券未到账。

  2. 游戏发布公告,待服务修复后可查询之前的充值结果。

  3. 这时用户可继续在商城操作,例如用账户的点券余额购物。

  4. 异常恢复后,北方机房数据库同步 22 主库信息到 22 备用存储(此时需要同步交易信息,更新并同步余额)。

  5. 若异地多活未切换,用户在南方机房可查询到之前的充值记录。

  6. 若异地多活切换,用户回到北方机房,从 22 主库查到之前的结果。


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

唐尤华

关注

还未添加个人签名 2018.03.27 加入

还未添加个人简介

评论

发布
暂无评论
王者荣耀商城异地多活架构设计_架构实战营_唐尤华_InfoQ写作平台