王者荣耀商城异地多活架构设计
1.业务背景
1.1 业务数据
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
1.2 业务功能
1.2.1 购买英雄、皮肤、新品、符文
1.2.2 特惠、夺宝、神秘商店
1.2.3 充值:通过第三方充值的方式
1.3 关键数据约束
1.3.1 余额足够才能购买
1.3.2 已经购买的英雄和皮肤无法重复购买(或者说限购物品无法重复购买)
2.设计过程
2.1 业务分级
购买英雄和皮肤(只能单次购买)>夺宝(可以多次重复购买物品)>充值
2.2 数据分类
2.2.1 购买英雄和皮肤
2.2.1.1 已经购买过的英雄和皮肤无法重新购买,需要辨别当前是体验卡还是已经实际购买
2.2.1.2 依赖余额是否足够购买,不够的话 需要充值
2.2.1.3 虚拟商城不需要物流发货,需要保证数据一致性
2.2.2 夺宝
夺宝其实也是购买的一种变种,但是不是实时展示,可以存在一定的延迟处理。
2.2.3 充值
第三方充值在于订单的流转过程以及订单数据完整
2.3 数据同步
2.3.1 购买:
2.3.1.1 购买英雄和皮肤数据只会新增不会修改,数据库同步即可。
2.3.1.2 购买道具数据存在修改和新增需要加缓存以及消息队列保证数据的一致性。
2.3.2 充值数据
充值数据存在修改和新增需要加缓存以及消息队列保证数据的一致性
2.4 异常处理
2.4.1 购买出现扣钱但是虚拟货物没到账?
2.4.1.1 个案的话单独补偿、
2.4.1.2 活动则需要停服:整个活动或者区域补偿。
2.4.2 充值
2.4.2.1 充值失败:重新激活充值即可
2.4.2.2 无法充值:停服公告
2.4.3 无法购买?
停服更新,发放虚拟币(金币或者钻石、铭文碎片)补偿
3.异地多活架构示意图
评论