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

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

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

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