写点什么

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

作者:张靖
  • 2021 年 12 月 23 日
  • 本文字数:878 字

    阅读完需:约 3 分钟

业务背景

【业务数据】

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

【业务功能】

  1. 充值点券

  2. 消费(点券、金币、钻石、积分四种游戏货币);

  3. 购买英雄、皮肤,不可重复购买

  4. 购买道具,可重复购买

  5. 限时购买

  6. 赠送礼物

  7. 夺宝

【关键业务约束】

  1. 商城流通货币有金币、钻石、点券;皮肤和大部分道具只有点券可购买

  2. 点券通过充值获取,现金无法直接在商城支付

  3. 用户属于不同的区服,可创建多个区服角色,不同区服的商品不共享

  4. 商城商品为虚拟商品,无需物流,直接发放至用户账号

  5. 限时商品只允许在指定时间可以购买

  6. 限次礼包,在指定时间内只能购买最多限制次数


业务分级

  • 异地多活应该保证哪个或者哪几个核心业务?

  • 充值和消费

  • 业务

  • 购买英雄和皮肤,充值点券

  • 相关问题

  • 优先保障充值业务的成功,确保收入

数据分类


【充值】

1、依赖 QQ 钱包和微信支付功能,本身要做收单功能;

2、充值记录,只会新增不会修改,每条充值记录只有一个全局唯一的充值订单 RoleID;

3、充值积分奖励记录,类似充值记录,有一个订单 ID 相关的积分记录 RoleID;

4、用户充值成功之后添加账户点券余额,余额需要保障强一致


【消费】

1、新增订单:全局唯一,不接重复,算法生成

2、每次消费行为创建一条全局唯一的消费订单 RoleID;

3、消费方式有四种货币方式,对应的每个用户应该有四个虚拟货币账户,消费后扣除对应的虚拟货币;


数据同步

【充值】

用户 ID:数据库同步

点券余额: 全局一致性,采用数据库同步余额

充值订单 RoleID、积分记录 RoleID、消费订单 RoleID 都是只新增不修改,主主同步即可;


【消费】

用户 ID:数据库同步

订单 id:每次新建,全局唯一,不会修改,用算法生成,数据库同步

皮肤、英雄数据只有两种状态即有没有,适合用主从同步,数据修改量较小,加消息队列加快同步速度

异常处理

【充值】

  1. 充值成功,点券余额同步不及时

  2. 刷新重试

  3. 人工介入对账

2.qq 钱包、微信支付故障

直接挂公告,暂停充值


【消费】

1、优惠券没有抵扣成功

  • 送用户一点补偿,优惠券或点券

2、限时商品购买异常

  • 再次开放限时商品购买;

  • 后台人工操作购买

3、购买英雄、皮肤,订单信息同步丢失

  • 全局唯一 ID 做幂等

 

【王者荣耀异地多活架构示意图】


发布于: 22 小时前
用户头像

张靖

关注

还未添加个人签名 2018.09.18 加入

还未添加个人简介

评论

发布
暂无评论
王者荣耀商城异地多活架构设计