模块七 -- 王者荣耀商城异地多活架构设计
业务分级
王者荣耀按重要性排序,最重要的前三个业务为登录、对战、商城,这里主要分析【商城】的异地多活方案
王者荣耀商城和淘宝商城不同的是:
1.淘宝商城的东西是可以退货的,王者荣耀商城的东西是不可以退货的。
2.王者荣耀商城的东西是没有库存一说的,但是淘宝商城的东西是有库存一说的
数据分类
1.RoleID:登录后就不会改变了,但是要记录 RoleId 对应的区服关系,区服数据只会新增不会修改
2.用户点券余额:强一致性,且和 RoleId+区服绑定。用户充的点券是要强制绑定到某个区服的,跨区服的点券是不可以共用的。
3.点券充值订单信息: 全局唯一,每次新建,不会修改
4.购买物品订单 : 全局唯一,每次新建,不会修改
5.皮肤、英雄等不可重复物品:和区服+roleId 绑定,只会新建一次,不会修改,强一致性
6.鲜花,改名卡:和区服+roleId 绑定,可以使用,也可以购买,最终一致性
数据同步
1、RoleID 和区服对应关系,只会新建不会修改,数据库同步即可。
2、点券余额与区服的对应关系,强一致性,数据库同步即可。
3、点券支付订单 ID,全局唯一,每次新增,不会修改,用算法生成,数据库同步即可。
4、购买虚拟商品的订单 ID 和区服对应关系,只会新建不会修改,数据库同步即可。
5、唯一性商品与区服+RoleId 的对应关系,强一致性,数据库同步即可。
6、非唯一性商品与区服+RoleId 的对应关系,最终一致性。
异常处理
1、充值过程中微信钱包和 QQ 钱包挂了怎么办?
公告提示:充值功能暂停,请稍后再试。
2、用户消耗了点券,但是没有得到相应的道具怎么办?
通过日志或数据库记录的一些信息恢复数据,并对用户进行相应的补偿
3、用户通过微信钱包和 QQ 钱包进行了消费,但是点券未到账
可以通过人工排查微信钱包和 QQ 钱包的充值记录,或者系统定时扫描数据库中状态异常的付费订单。
4、用户在商城购买的商品、订单数据未及时同步至异地机房该怎么办
等恢复后再处理。
评论