写点什么

模块七:王者荣耀商城异地多活架构设计(作业)

用户头像
紫云
关注
发布于: 9 小时前

业务背景

【业务数据】

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


【商城业务功能】

  • 购买英雄、皮肤、道具等。


【商城业务分析】

  • 商城售卖的都是虚拟物品,没有物流,流程相对实体商城简单。虚拟物品如果丢失,损失并不严重。运营方可以通过补偿玩家,或者补发道具的方式解决。


  • 商城内售卖的虚拟物品主要有两类:

  • 限购一次:英雄,皮肤。如果发生重复购买,把后来购买的记录,按原路退回即可。

  • 可多次购买:各种道具。如果数据发生异常,根据玩家的申述,审核后补偿响应道具即可。

  • 商城购买使用的是虚拟货币。虚拟货币的来源有两类:

  • 充值获得:通过腾讯的支付渠道充值点券获得。充值方式单一,没有其他充值渠道。如果腾讯的支付渠道异常,只能选择暂时关闭充值功能,没有其它选择。另外,充值使用的是真钱,异地多活的过程中,如果数据发生异常,处理流程比较复杂且审核过程漫长,不建议做异地多活。

  • 任务获得:玩家通过游戏,游戏内的活动获得的不同类型的虚拟货币。虚拟货币容易获得,主要消耗的是玩家的时间。这种货币消费也频繁。就算数据异常,玩家可能都不会注意到货币值有问题。

  • 商城购买的商品,只在当前游戏区有效,切换游戏区无法跨区使用道具,英雄,皮肤。

【业务分级】

商城的业务,可以划分为以下几个:

购买商品、充值点券

根据分析,异地多活应保证购买商品这一核心业务。


【数据分类与同步】

  • 玩家 RoleID 登录后不会变,数据库同步即可

  • 玩家的英雄、皮肤购买后也不会变,数据库同步即可

  • 道具被购买后,数量会增加,使用后,会减少,道具的操作会有购买和使用日志,操作日志只会写入一次,不会更改。数据库同步使用日志即可保证最终数据一致性。

  • 货币余额,玩家充值和消费都会有日志,消费日志只会写入一次,不会更改。数据库同步操作日志即可保证最终数据一致性。


【异常处理】

  • 玩家在购买英雄、皮肤之后,系统挂了,但是数据还没同步到备份服。

玩家重新登录游戏,发现刚购买的英雄、皮肤不见了。客服可以安抚玩家,等到服务器恢复即可,也可以选择核实后补偿玩家或先发放商品。

如果玩家比较迷糊,发现商品不见了又重复购买。在服务器恢复的时候,通过数据检查和购买记录对账,将重复购买的商品退款即可。

  • 玩家在购买道具后,系统挂了,但是数据还没同步到备份服

方式类似购买英雄、皮肤。可以先安抚玩家,等到服务器恢复,重新对账道具使用日志,增减道具即可。

  • 玩家在充值中,系统挂了

可以根据充值记录,和腾讯那边的对账,人工补发货币,或者给玩家退款。


异地多活架构图

商城服的异地多活,需要使用的是数据库的互备。当某地机房故障,立刻将游戏切换到备份服,使用备份服的备份数据库启动商城即可。待故障解决,再将数据同步回本地,游戏可以停服维护,在停服期间,将备份服新产生的商城操作日志,和故障前的日志对账。对异常商品进行处理即可。


用户头像

紫云

关注

还未添加个人签名 2019.05.25 加入

被迫做运维的开发

评论

发布
暂无评论
模块七:王者荣耀商城异地多活架构设计(作业)