写点什么

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

作者:Steven
  • 2021 年 12 月 23 日
  • 本文字数:776 字

    阅读完需:约 3 分钟

【背景】

假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。

【作业要求】

1. 分析王者荣耀商城的业务特点,设计其异地多活架构;

2. 按照模块 7 第 5 课的方法来设计异地多活架构。

业务背景

【业务数据】

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

【业务功能】

1. 使用微信或者 QQ 账号登录游戏;

2. 对战:例如匹配、排位、巅峰赛;

3. 商城:购买英雄、皮肤、道具等;

4. 活动:领取各种奖励和道具;

5. 社区:各种攻略,视频等。

【关键业务约束】

1. 登录用户才能对战;

2. 用户属于不同的区服,例如 Android 平台微信 22 区“刺客信条”,同一微信

ID 可以加入多个区服,俗称“大号”、“小号”;

3. 不同区服用户可以一起对战。


设计步骤


业务分级

Top3 为登录、对战、商城,作业要求为商城设计异地多活架构,所以这里直接选择和限定为商城


数据分类

【充值】

RoleID:登录后就不会变了;

点券余额:和 RoleID 绑定,有修改。

【购买】

RoleID:登录后就不会变了;

购买数据:和 RoleID、商品 ID 绑定,只会新建不会修改。


数据同步

【充值】

RoleID:和区服对应关系,只会新建不会修改,数据库同步即可;

点券余额:和 RoleID 绑定,正常情况下采用数据库同步即可,异常情况下采用临时事务表配合消息队列做事务合并。

【购买】

RoleID:同充值;

购买数据:和 RoleID、商品 ID 绑定,不会修改,数据库同步即可。


异常处理

【充值】

  1. 充值渠道挂了怎么办?

换一个,如果都挂了,直接系统公告:充值渠道维护中。

  1. 充值过程中系统挂了怎么办?

未付款的作废,付完款的补单完成充值。

【购买】

  1. 本地机房挂掉,点券余额没有完全同步到异地机房,玩家登录到异地机房后无法购买,怎么办?

玩家充值后再购买,本地机房恢复后,点券余额会做合并。

  1. 同样的英雄和皮肤不能重复购买,玩家的英雄和皮肤数据未同步到异地机房,玩家重复购买了怎么办?

返还到点券余额。


异地多活架构图


用户头像

Steven

关注

还未添加个人签名 2008.07.18 加入

还未添加个人简介

评论

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