架构训练营 - 作业七
1.王者荣耀商城业务背景
1.1 业务数据
2020 年 11 月公布数据,全年日均活跃 1 亿,注册玩家 6 亿,最高同时在线 100 万
1.2 业务功能
使用微信钱包或者 QQ 卡包充值点券,然后在商城中使用点券才能完成支付
使用点券购买英雄、皮肤
使用点券购买道具
1.3 关键业务约束
只能使用微信钱包或者 QQ 卡包才能充值点券
英雄、皮肤只能买一个,不能重复购买
购买的物品不能跨区使用
点券不能跨区使用
2.设计步骤
2.1 业务分级
基于上述的分析可知,异地多活应该保证充值点券、商品购买这两个核心业务
2.2 数据分类
充值点券
用户 RoleID:全局唯一,不可变
充值点券 ID:每次新建,区服唯一,不可变
点券余额:区服强一致性
充值交易数据:与充值点券 ID 绑定
商品购买
用户 Role ID:全局唯一,不可变
购买商品交易 ID:每次新建,区服唯一,不可变
英雄、皮肤 ID 及数量:只能购买一次,区服唯一
购买道具:可购买多次
购买交易数据:与购买商品交易 ID 绑定即可
2.3 数据同步
充值点券
交易点券 ID:每次新建,区服唯一,不会修改,用算法生成,可以采用数据库同步充值数据
点券余额:区服强一致性,采用数据库同步余额数据
商品购买
购买商品交易 ID:每次新建,区服唯一,不会修改,用算法生成,采用数据库同步即可
2.4 异常处理
充值点券
调用微信钱包或者 QQ 卡包充值服务异常?
答:直接挂公告:充值服务维护中,请稍后再试
充值过程中,服务器宕机?
答:记录下异常订单,等服务器恢复后修正
商品购买
购买英雄时,点券余额已扣除,但是英雄未购买成功?
答:记录下异常订单,进行余额修正,若用户投诉,也可以以点券或者道具的方式,弥补用户的损失
3.王者荣耀商城异地多活架构示意图
商城异地多活架构
评论