架构实战营 第 4 期 模块七作业
王者荣耀商城异地多活架构设计
商城业务功能
进入商城,查看皮肤、英雄
充值,使用微信钱包或 QQ 钱包充值点券,商城中使用点券进行支付
支付,使用点券购买皮肤、英雄、鲜花等虚拟商品,
商品无库存,但是英雄和皮肤只能买 1 个,不能重复购买,鲜花、改名卡之类的道具可以买多个
商品发送给玩家指定区服的账户
设计步骤 1 - 业务分级
选择进入 商城、支付 作为核心功能
选择原因:1. 选择进入商城: 只有用户查看商品才会进行后续的,充值、支付操作
选择 支付:用户消费是游戏盈利的途径,商城如果不能支付购物商品,会直接影响游戏收益
不选择 充值: 用户可以通过多种渠道进行充值,多个渠道同时无法支付的概率相对较低
不选择 商品库存:除了英雄和皮肤外,其他物品用户是可以无限次购买,用户如果重复购买了限制商品比如英雄和皮肤,并不会影响游戏体验,可以通过后续返还点券的方式来补偿用户
不选择 商品发送给玩家指定区服的账户:游戏商城的物品都是虚拟物品,物品即使延迟发放,用户也可以接受,并不会影响游戏体验。如果系统出现问题,也可以通过后台给用户重新补发,即使超发也并无损失,也可以通过返还点券、体验券的方式来补偿用户
设计步骤 2 - 数据分类
浏览商品
商品 id:游戏商城的商品是固定的,并且所有区服中商品都是相同的,商品一旦创建,就不会进行修改,数据库同步即可
商品数据:跟商品 id 绑定,修改频率低,数据库同步即可
支付
订单 id: 根据商品 id 和用户生成 全局唯一 id
订单记录:订单数据跟订单 id 绑定,不允许修改,数据库同步
设计步骤 3 - 数据同步
设计步骤 4 - 异常处理
浏览商品
1.商城系统更新后,商品未同步
等待商城系统数据同步,用户可以正常购买已有的商品,新增商品同步后再购买
2.商城系统服务异常
切换至其他机房,商品数据都相同不影响用户使用
支付
1.用户支付过程中,商城系统异常
允许用户发起退款,或者商城系统恢复后重新同步支付记录,进行补发。当商城系统切换至异地机房时,用户可以对同一商品进行支付,后续商城恢复同步时进行补偿
2.用户充值点券后,点券数据未同步至异地机房
当用户使用异地机房支付时,如果异地机房的点券余额充足,则允许用户支付,不足时,不允许用户支付,
评论