模块 7 作业
王者荣耀异地多活架构设计
1. 业务背景
【业务数据】
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
【业务功能】
1. 使用微信或者 QQ 账号登录游戏;
2. 对战:例如匹配、排位、巅峰赛;
3. 商城:购买英雄、皮肤、道具等;
4. 活动:领取各种奖励和道具;
5. 社区:各种攻略,视频等。
【关键业务约束】
1. 登录用户才能对战;
2. 用户属于不同的区服,例如 Android 平台微信 22 区“刺客信条”,同一微信 ID 可以加入多个区服,俗称“大号”、“小号”;
3. 不同区服用户可以一起对战。
2. 异地多活架构设计步骤 1:业务分级
Top3 业务: 登录,对战,商城
3. 异地多活架构设计步骤 2:数据分类
【商城】
RoleID:不会改变,全局唯一;
商品信息类别:修改少,全局数据
支付关键数据: 支付本身依赖 QQ 钱包、微信;因为是企鹅产品,暂时不支持支付宝;
点券:和用户的 RoleID 关联,全局强一致性
商品库存:虚拟商品,没有库存的概念;
英雄和皮肤:和用户 RoleID 绑定,同一个 RoleID 只能购买一次。强一致性
鲜花、改名卡道具:和用户 RoleID 绑定,可以无限购买。强一致性
4. 异地多活架构设计步骤 3:数据同步
【商城】
RoleID:不会改变,全局唯一;数据库同步
商品信息类别:修改少,全局数据。数据库同步
商品库存:虚拟商品,没有库存的概念。不需要同步
点券:全局强一致性.数据库同步; 点券充值只能在归属地充值
英雄和皮肤:全局一致性,只能购买一次,可以覆盖。 数据库同步 + 可加消息队列
鲜花、改名卡道具:全局一致性,数据库同步
支付系统的账号密码: 第三方管理,无需处理。
4. 异地多活架构设计步骤 4:异常处理
【异步处理】
点券不对怎么办,等数据同步了再看。适当可以给用户补偿
英雄和皮肤不对:可以人工介入修复,适当可以给用户补偿
鲜花、改名卡道具丢失 : 可以接入修复,适当可以给用户补偿
5. 架构图
版权声明: 本文为 InfoQ 作者【dwade】的原创文章。
原文链接:【http://xie.infoq.cn/article/87ba5274a679d896cfb605873】。文章转载请联系作者。
评论