如何设计业务异地多活架构 - week7
1 业务背景
目前在王者荣耀游戏的业务上,我们已经针对核心业务 Top3 中的登录和对战进行了异地多活架构设计,并已经落地运行。现针对游戏商城业务进行异地多活架构设计,尽可能做到保证玩家在游戏中的商品购买的稳定性。
2 数据分类
【购买商品】
用户 ID:由微信和 QQ 授权登录,会返回全局唯一 RoleID, 登录后此 ID 是唯一的。
商品 ID:商品信息,包括英雄、皮肤等虚拟物品,每个商品 ID 都是唯一的。
用户余额:全局强一致性。
充值 ID:此 ID 用户用于建立与微信钱包或 QQ 钱包等发起,充值 ID 是唯一的,不可变。
支付 ID:商城内支付请求 ID, 用户记录用户通过点卷购买对应的商品,支付 ID 是唯一的,不可变的。
3 数据同步
用户 ID: 全局唯一,不可变,登录场景已经包含用户 ID 的同步设计,主要采用数据同步+消息队列同步。
商品 ID:当有新商品加入时,会产生新的商品 ID, 商品 ID 全局唯一,不会修改,采用算法生成,数据库同步即可。
用户余额:采用数据库同步,且保证全局强一致性。且只能在归属地充值。
充值 ID:充值 ID 由三方充值商提供,唯一 ID,不可变,采用双主方式写入。
支付 ID:支付 ID 由内部生成的唯一 ID,不可变,采用双主方式写入。
4 异常处理
无法充值: 因支付商(qq 钱包和微信钱包)异常导致的违法充值,直接挂公告提示用户暂时无法充值。
充值未到账:
通过人工审核,手动调整。
客户等待一段时间等待数据一致性延时
无法支付:
客户等待一段时间后再尝试
或因支付失败,重新将产品加入购物车,等待支付恢复。
评论