写点什么

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

作者:supermenG
  • 2022 年 2 月 17 日
  • 本文字数:842 字

    阅读完需:约 3 分钟

【背景】

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

【作业要求】

1. 分析王者荣耀商城的业务特点,设计其异地多活架构;

2. 按照模块 7 第 5 课的方法来设计异地多活架构。

【提示】

1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;

2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;

3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;

4. 用户买鲜花、改名卡之类的道具可以买多个;

5. 分析步骤参考模块 7 第 6 课的案例。


业务背景

【业务数据】

2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。

【业务功能】

商城:充值、商品浏览、下单、支付

【业务约束】

1. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;

2. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;

3. 用户买鲜花、改名卡之类的道具可以买多个;

  1. 商品由王者荣耀管理员维护更新。


设计

【数据分类】

  1. 充值余额增加:全局强一致性

  2. 商品查看:数据可变量可增删,保证最终一致性。

  3. 订单数据:生成后不变,保证最终一致性。

  4. 支付余额减少:全部强一致性

【数据同步】

  1. 充值余额增加:使用数据库同步。充值只能在归属地充值。

  2. 商品查看:使用管理员专属服务器更新商品数据,采用数据库+消息队列同步数据。

  3. 订单数据:生成后,采用数据库+消息队列同步数据。

  4. 支付余额减少:使用数据库同步。只能在归属地。

【异常处理】

  1. 如果管理员更新产品后,数据还未同步到其他机房怎么办?

可以接受新上架的产品用户看不到,对业务不影响。可接受延迟。

  1. 如果在异地看不到订单怎么办?

可以接受订单的延迟更新。

  1. 购买商品后,余额未及时同步其他机房,在异地机房登陆后,发现余额比实际的要多?

余额在数据库数据同步后,会更新。由于用于无法在非归属地购买,多出的余额无法使用。不会造成损失。购买商品的订单和余额的扣减可以同步更新,余额未更新,也无法看到购买的商品;余额更新后看到订单和购买的商品。

【架构示意图】

用户头像

supermenG

关注

还未添加个人签名 2019.04.19 加入

还未添加个人简介

评论

发布
暂无评论
王者荣耀商城异地多活架构设计