极客时间架构实战营模块 7 作业
王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例。
设计步骤
步骤一:业务分级
王者荣耀商城涉及注册、登录、点券、道具(英雄、皮肤、特效等)、活动;
在异地多活架构设计中,需要优先保障的是登录、点券、道具。
步骤二:数据分类
用户信息关键数据:RoleID。依赖 QQ 、微信、苹果账号授权登录,本身无需登录信息,QQ、微信、苹果授权登录会返回给王者荣耀全局唯一 RoleID;
登录关键数据:登录 Session。拿到 RoleID 时,生成游戏访问所需要的 Session;
充值关键数据:点券信息。充值依赖 QQ、微信、苹果支付系统,充值成功后,按对应平台的回调信息更新点券数值即可;
道具关键数据:用户点击购买道具时,检查其是否已经拥有(APP 前台检查,已付款的隐藏购买选项),若没有购买过,则在校验点券足够之后,解锁道具的使用权限,并完成点券扣除。
步骤三:数据同步
RoleID:接受到登录请求的服务器自行去调用三方接口获取,不涉及数据同步;
登录 Session:由 DNS 将请求路由到对应服务器,不涉及数据同步,登录时自动生成即可。若所在区域的机房整个宕机,提示用户重新登录;
点券数据:三方充值成功的回调消息执行幂等消费,
道具数据:类似于用户的权限信息,购买后,按 RoleID 全量复制到其他
步骤四:异常处理
微信、QQ、苹果登录不上、三方充值失败:发布公告,让用户耐心等待三方修复问题;
充值扣款点券却没更新:通过客服申诉,由人工复核,若确认系统问题,在恢复其余额的同时,给予适当补偿;
道具购买后,后续发现还不能使用道具:提示用户稍后再查看,等待数据复制,视情况可以给予用户补偿。
架构图
https://www.processon.com/view/link/6183ee15e401fd493d44a0af
版权声明: 本文为 InfoQ 作者【jjn0703】的原创文章。
原文链接:【http://xie.infoq.cn/article/1a33a53b494d717e1d636e8b3】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论