王者荣耀商城异地多活架构设计
游戏内的商城和一般的电商平台有几个重要区别:
1. 游戏内商城售卖的都是虚拟物品,没有库存的约束。
2. 很多情况下会对购买的数量或者能否购买有一些限制条件,比如限购或者玩家达到一定等级才能进行购买。
虽然游戏商城可能会有直购,但是大多数场景还是先充值成点券,再使用点券消费。
设计步骤 1 - 业务分级
点券充值>点券消费>商品展示
设计步骤 2 - 数据分类
【点券充值】
RoleID:注册登录后就不会变了;
充值订单 ID:每次新建,全局唯一,不会修改;
点券余额:和 RoleID 绑定,全局强一致。
【点券消费】
RoleID:登录后就不会变了;
商品 ID: 全局唯一,不会修改;
购买订单 ID:每次新建,全局唯一,不会修改;
用户点券余额:和 RoleID 绑定,全局强一致。
【商品展示】
商品 ID: 全局唯一,不会修改。
设计步骤 3 - 数据同步
账号信息(RoleID), 强一致,全区唯一,数据库同步+消息队列同步
充值订单/购买订单:强一致,数据库同步
点券余额:强一致,数据库同步
商品:最终一致,数据库同步
设计步骤 4 - 异常处理
充值失败或商场购买失败,在确定事实后,以人工补偿为主
评论