架构训练营 模块 7 - 王者荣耀商城异地多活架构设计
业务定制型异地多活
与电商平台不同之处:
虚拟商品库存无上线
商城卖家只有一个就是王者荣耀
核心场景
充值
购买虚拟商品
数据分类
用户 ID : RoleID 微信提供,全局唯一的
用户已购买过的英雄和皮肤:全局唯一,强一致性
购买记录: 全局不唯一,强一致性
用户点券余额: 全局不唯一,强一致性
虚拟商品: 变动很少的数据。
数据同步:
用户 ID: 微信提供,无需同步
用户已购买过的英雄和皮肤,全局唯一,强一致性, 数据库同步+消息队列同步
购买记录: 全局不唯一,强一致性 ⇔ 数据库同步
用户点券余额: 全局不唯一,强一致性 ⇔ 数据库同步
虚拟商品: 系统重新生成
异常处理
A 区刚买英雄和皮肤,挂了,登录 B 区再买,会违反只能买 1 个的约束
B 区可以买,A 区恢复后,返券其中一份。
A 区刚充值了,但服务器挂了, B 区看不到刚充值的记录和点券余额怎么办?
等 A 区恢复后就能看见了。
A 区刚充值了,但服务器挂了, B 区没有点券,无法购买?
在 B 区继续充值后 买商品
架构图
评论