王者荣耀商城异地多活设计
一、业务背景
【业务数据】
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
【业务功能】
1. 使用微信或者 QQ 账号登录游戏;
2. 商城:购买英雄、皮肤、道具等;
【关键业务约束】
1. 登录用户才能在商城购买英雄、皮肤、道具等;
2. 用户属于不同的区服,例如 Android 平台微信 22 区“刺客信条”,同一微信 ID 可以加入多个区服,俗称“大号”、“小号”,不同区服购买的英雄、皮肤和道具不能共享;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
二、商城业务分析
2.1 业务分级
按核心场景优先级:浏览商品>购买英雄、皮肤、道具>充值。游戏虚拟电子商品无需库存管理,浏览商品缓存至客户端本地可以不用做异地多活,充值业务做异地多活比较复杂,综合考虑选择购买英雄、皮肤、道具业务做异地多活。
2.2 数据分类
【购买英雄、皮肤、道具】
RoleID:登录后就不会变了;
订单 ID:每次新建,全局唯一,不会修改;
已购商品:与 RoleID 绑定,交易成功后新增商品与用户角色的关系数据,不会修改;
2.3 数据同步
【购买英雄、皮肤、道具】
RoleID:RoleID 和区服对应关系,只会新建不会修改,数据库同步即可;
订单 ID:每次新建,全局唯一,不会修改,用算法生成,数据库同步即可;
已购商品:与 RoleID 绑定,交易成功后新增商品与用户角色的关系数据,不会修改,数据库同步即可;
2.4 异常处理
【购买英雄、皮肤、道具】
1. 用户购买交易过程中系统挂掉怎么办?
用户重新购买即可,原有交易数据作废。
2. 用户购买的商品数据未及时同步到异地机房,用户无法使用已购英雄、皮肤和道具怎么办?
等恢复了再使用。
3. 用户购买的商品数据未及时同步到异地机房,用户若再次购买同一英雄、皮肤怎么办?
系统挂掉后公告用户不能交易英雄和皮肤,等恢复了再购买。
二、异地多活架构
版权声明: 本文为 InfoQ 作者【π】的原创文章。
原文链接:【http://xie.infoq.cn/article/4bfb858e56bc4b1c7ad6e59a6】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论