[架构实战营] 第七模块
王者荣耀商城异地多活架构分析
业务分级
复制代码
数据分类
用户信息,全局唯一,不可丢失
余额,最终一致性,不可丢失,
英雄+皮肤,全局唯一,可恢复
其他道具,可重复,可丢失,可恢复
数据同步
用户信息
用户 ID,全局唯一,数据库+消息队列
用户拥有的商品
英雄、皮肤,全局唯一,数据库+消息队列同步
其他商品,全局一致,数据库同步
充值
流水号,全局唯一,数据库+消息队列
余额,全局一致,数据库同步
购买
订单号,不同步,算法保证全局唯一,只新增
异常处理
用户信息
如果用户无法登录,直接停服公告
如果用户在南方机房购买了英雄/皮肤,没有同步到北方机房,用户在北方机房再次购买怎么办?
多次购买记录,退点券即可
如果用户在南方机房购买了非英雄/皮肤商品,没有同步到北方机房,用户在北方机房再次购买怎么办?
最终一致性,运营恢复,补偿用户
充值
无法充值?
支付通道问题,换支付通道
自身服务问题,挂公告。
如果用户在南方机房充值了,没有同步到北方机房怎么办?
最终一致性,请用户等待一段后刷新查看
记录好充值日志,人工恢复
如果用户在北方机房充值消费,记录在临时事务表,等故障恢复后,同步临时事务表
购买
订单号全局冲突?
重新生成即可
架构图:
版权声明: 本文为 InfoQ 作者【Vincent】的原创文章。
原文链接:【http://xie.infoq.cn/article/880b9dc0fc791b032b0b8db92】。未经作者许可,禁止转载。
评论