王者荣耀商城异地多活架构设计
业务背景
【业务数据】
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
【业务功能】
1. 使用微信或者 QQ 账号登录游戏;
2. 对战:例如匹配、排位、巅峰赛;
3. 商城:购买英雄、皮肤、道具等;
4. 活动:领取各种奖励和道具;
5. 社区:各种攻略,视频等。
【关键业务约束】
1. 登录用户才能对战;
2. 用户属于不同的区服,例如 Android 平台微信 22 区“刺客信条”,同一微信 ID 可以加入多个区服,俗称“大号”、“小号”;
3. 不同区服用户可以一起对战。
设计步骤
业务分级
异地多活应该保证的核心业务为 登录,对战和商城(商城为本文章的设计要求)
数据分类
【商城】
点券余额:不可丢失,强一致性:
购买记录 ID:每次新建,全局唯一,不会修改
购买记录:与购买记录 ID 绑定,只会新建不会删除
数据同步
【商城】
点券余额:强一致性;采用数据库同步
购买记录 ID:每次新建,全局唯一,不会修改,数据库同步即可
购买记录:与购买记录 ID 绑定,不会修改,数据库同步即可
异常处理
购买重复了怎么办?
购买记录取消,回退点券
商城无法打开怎么办?
等恢复了再打开购买
支付不了怎么办?
等恢复了再充值
异地多活设计
评论