王者荣耀商城异地多活架构设计
【业务数据】
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
【业务分析】
商城的商品是虚拟物品商城,其商品主要是虚拟商品,因此没有库存,也不存在物流。商城的核心业务是充值和商品购买。
【数据分类】
充值:
1. 用户 RoleID: 全局唯一,不可变。
2. 交易 ID: 每次新建,全局唯一,不会修改。
3. 交易数据: 和交易 ID 绑定, 只会新建,不会修改。
4. 余额:区服强一致性。
商品购买:
1. 用户 RoleID: 全局唯一,不可变。
2. 交易 ID: 每次新建,全局唯一,不会修改。
3. 交易数据: 和交易 ID 绑定。
不能重复购买的商品:只可新建,不能修改。
可重复购买的商品: 可以新建,也可以修改(增加数量或减少数量)。
【数据同步】
充值:
1. 用户 RoleID: 全局唯一,不可变。数据库同步加消息队列同步。
2. 交易 ID: 每次新建,全局唯一,不会修改。数据库同步加消息队列同步。
3. 交易数据: 和交易 ID 绑定, 只会新建,不会修改。数据库同步
4. 余额:区服强一致性。数据库同步
商品购买:
1. 用户 RoleID: 全局唯一,不可变。数据库同步加消息队列同步。
2. 交易 ID: 每次新建,全局唯一,不会修改。数据库同步加消息队列同步。
3. 交易数据: 和交易 ID 绑定。数据库同步
不能重复购买的商品:只可新建,不能修改。
可重复购买的商品: 可以新建,也可以修改(增加数量或减少数量)。
【异常处理】
充值:
1. 充值过程中,系统突然挂了怎么办?
钱退回用户,提示暂未充值成功,道具补偿用户,也可以手动修正数据。
商品购买:
1. 用户购买商品过程中,系统突然挂了怎么办?
做好分布式,保持最终一致。点卷退回给用户,或者补偿用户商品和道具
评论