王者荣耀商城异地多活架构设计
【业务背景】
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
(无物流,无库存)
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
(点券充值,点券支付)
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
(商品购买一次)
4. 用户买鲜花、改名卡之类的道具可以买多个;
(商品购买多次)
5. 分析步骤参考模块 7 第 6 课的案例。
【业务】
以商城为基础 注册,登录,点券充值,商品上架,商品购买,订单管理。
【设计分析】
【业务分级】
核心业务 登录,商品购买
【数据分类】
【登录】
1.依赖 QQ 和微信账号授权登录,本身无需登录信息;
2.微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID;
3.王者荣耀只需要记录 RoleID 对应的区服信息,区服数据只会新增不会修改。
【商品购买】
1.RoleID:登录后就不会变了
2.充值记录:每次新建,全局唯一,不可修改;
3.订单记录,每次新建,全局唯一,很少修改(状态属性很少修改,商品属性不可修改);
4.点券余额,全局强一致性
5.已购商品属性:全局唯一,很少修改;
6.订单 ID,商品 ID 算法生成
【数据同步】
【登录】
1.RoleID 和区服对应关系,只会新建不会修改,数据库同步即可。
【商品购买】
1.RoleID:登录后就不会变了
2.充值记录:每次新建,全局唯一,不可修改,数据库+消息队列同步;
3.订单记录,每次新建,全局唯一,很少修改(状态属性很少修改,商品属性不可修改),数据库+消息队列同步;
4.点券余额,全局强一致性,数据库同步
5.已购商品属性:全局唯一,很少修改,数据库+消息队列同步;
6.订单 ID,商品 ID 算法生成;
【异常处理】
【登录】
1. 新注册的用户数据还没有同步到异地机房 ,如何参加会议?
第一种方式是直接不允许参加,用户体验不好;
第二种方式是不登录也可以参加会议,由发起者生成邀请码/会议码/私密链接等方式邀请加入
【商品购买】
1.无法购买点券,点券余额不足?
1.等系统正常,购买 2.允许部分透支
2.购买重复或者购买较多
线下联系,补偿或者回退
【系统架构】
版权声明: 本文为 InfoQ 作者【流火】的原创文章。
原文链接:【http://xie.infoq.cn/article/51ce5a8c338fe70a612bea02f】。未经作者许可,禁止转载。
评论