写点什么

极客时间架构实战营模块 7 作业

用户头像
jjn0703
关注
发布于: 2 小时前

王者荣耀商城异地多活架构设计

【背景】

假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。

【作业要求】

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

发布于: 2 小时前阅读数: 4
用户头像

jjn0703

关注

Java工程师/终身学习者 2018.03.26 加入

USTC硕士/健身健美爱好者/Java工程师.

评论

发布
暂无评论
极客时间架构实战营模块7作业