写点什么

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

作者:Beyond Ryan
  • 2021 年 12 月 20 日
  • 本文字数:855 字

    阅读完需:约 3 分钟

0 - 业务背景

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

商城业务分析

1、商城的商品主要包括:英雄,皮肤,道具等,这些都是虚拟商品,没有物流和库存。

2、用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;

3、用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;

4、用户买鲜花、改名卡之类的道具可以买多个;

业务功能:登录钱包,充值,购买,

关键业务约束

1、登录用户才能进入商城,充值和购买商品;

2、用户属于不同的区服,例如 Android 平台微信 22 区“刺客信条”,同一微信 ID 可以加入多个区服,俗称“大号”、“小号”;

3、不同的区服购买的商品,只能在对应的区服内使用

4、用户需要充值点券,才能用点券支付


1 - 业务分级

核心业务:登录,充值,购买,需要保证,充值一定要到账,购买一个皮肤要马上感受的到。


2 - 数据分类

商城登录:

1、游戏登录表明商城登录,不用单独再登录;

2、微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID;

3、王者荣耀只需要记录 RoleID 对应的区服信息,区服数据只会新增不会修改


商城购买:

1、RoleID:登录后就不会变了;

2、购买商品 : 商品和唯一的 RoleId 绑定,购买记录只会新增不会修改


商城充值:

1、充值点券也和唯一的 RoleId 绑定,充值记录只会新增不会修改


3 - 数据同步

商城登录:

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

商城购买和充值:

1、RoleID:同登录;

2、充值点券订单 id 和区服对应关系,只会新建不会修改,数控库同步

3、点券余额与区服对应关系,点券余额和充值点券订单要考虑强一致性,数据库同步即可

4、商品订单与区服对应关系,点券余额和商品订单要考虑强一致性,数据库同步即可


4 - 异常处理

1、 微信和 QQ 挂了怎么办?

直接挂公告:系统停服维护。

2、商城充值过程中,商城挂了怎么办?

做好分布式事务,保持最终一致性,钱退回用户,道具补偿用户

3、用户购买商品过程中,商城挂了怎么办?

做好分布式事务,保持最终一致性,点券退回用户或者商品最终补偿用户,道具补偿用户


5-异地多活架构设计图



用户头像

Beyond Ryan

关注

学习如逆水行舟,不进则退 2018.09.07 加入

学习如逆水行舟,不进则退

评论

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