王者荣耀商城异地多活架构设计(架构实战营 模块七作业)
业务特点
虚拟商品没有库存限制,也基本没有成本,售出后无法进行退货。
业务分级
王者荣耀商城包含下列场景:登录、点券充值、使用点券购买商品、商品上下架。
从收入来源的角度来考虑,核心场景应为登录、点券充值以及购买商品。
数据分类
用户登录
依赖于王者荣耀 app 的登录,通过 session 来验证登录状态。
session:全局唯一,最终一致。
点券充值
点券账户 ID:全局唯一
点券余额:全局强一致性,不可丢失
充值记录 ID:每次新建,全局唯一,不会修改
充值记录:与充值记录 ID 绑定,只会新建不会修改
购买商品
购买记录 ID:每次新建,全局唯一,不会修改
购买记录:与兑换记录 ID 绑定,只会新建不会修改
商品数据:最终一致性,可以丢失,可恢复
数据同步
用户登录
session:回源溯取+重新生成
点券充值
点券账户 ID:数据库同步+消息队列同步
点券余额:全局一致性,采用数据库同步,充值只能在区服主机进行。
充值记录 ID:数据库同步+消息队列同步
充值记录:数据库同步+消息队列同步
购买商品
购买记录 ID:数据库同步+消息队列同步
购买记录:数据库同步+消息队列同步
商品数据:数据库同步+消息队列同步
异常处理
用户登录
同对战分析。
点券充值
1.微信支付挂了
直接挂公告:系统停服维护。
2.点券余额未及时同步到异地机房
等恢复了再购买。
购买商品
1.用户购买的商品未及时同步到异地机房,用户看不到购买的英雄或皮肤
等恢复了再使用。
2.用户购买的商品未及时同步到异地机房,用户看不到购买的英雄或皮肤,重复进行购买
对于英雄或皮肤这些不能重复购买的商品,可进行退款处理。
对于鲜花或改名卡这些可重复购买的商品,如果影响客户范围不大,可让客服对其进行安抚,如果影响范围够大,可进行退款但不退货,因为虚拟商品的成本较低。
3.异地机房没有商品购买记录,没有及时发放
等系统恢复了再发放。
异地多活架构图
版权声明: 本文为 InfoQ 作者【Gor】的原创文章。
原文链接:【http://xie.infoq.cn/article/aaa5c37c343bc2858a6e3c471】。未经作者许可,禁止转载。
评论