模块七 - 王者荣耀商城异地多活架构设计
业务数据
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
背景
现在要实现王者荣耀里面的商城的异地多活架构。
业务分析
这里主要是从数据角度出发,全面覆盖核心业务操作。
业务功能
运营端
上架英雄
上架皮肤
上架道具
上架星元
用户端
购买英雄
购买皮肤
购买道具
购买星元
夺宝
关键业务约束
每个账户同一个英雄只能买一次
每个账户同一个皮肤只能买一次
道具能够多次购买
架构设计
主要按下图分析步骤进行细节设计

业务分级(数据热度)
数据热度排行:英雄>皮肤>道具>星元>夺宝
这里主要做英雄、皮肤、道具三种数据的异地多活。
数据分类
数据细节
账户余额:金币余额
英雄关系:RoleId 与英雄 Id
皮肤关系:RoleId 与皮肤 Id
道具关系:RoleId 与道具 Id

数据同步
账户余额属于强一致数据,暂不做异地多活。

异常处理
买了英雄/角色/道具,但无法使用:让用户等等吧,同步过来就好了
架构图
唯一性:英雄关系、皮肤关系,要增加数据库唯一约束,做到幂等性

版权声明: 本文为 InfoQ 作者【彬】的原创文章。
原文链接:【http://xie.infoq.cn/article/014499b9f26693c667d5a721e】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论