写点什么

极客时间架构训练营模块七作业

作者:李晨
  • 2022-11-24
    北京
  • 本文字数:746 字

    阅读完需:约 2 分钟

极客时间架构训练营模块七作业

背景

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

业务背景

业务数据

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

业务功能

  1. 使用微信或者 QQ 账号登录游戏

  2. 商城:购买英雄、皮肤、道具等

关键业务约束

  1. 使用微信或者 QQ 账号登录游戏

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

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

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

  5. 王者荣耀的商城是虚拟物品商城,所以用户购买的虚拟物品无需考虑库存和物流

设计步骤

步骤 1-业务分级

服务主要有:注册、登录、充值点券、购买商品(不允许重复购买的商品、允许重复购买的商品)

由于购买商品分为不允许重复购买的商品和允许重复购买的商品,购买商品做异地多活复杂度太高。且商城中均为虚拟商品,用户充值点券后购买商品的意愿非常高,即使服务挂掉,用户可以等待服务恢复后再购买,对于用户也是可以容忍的

所以需要异地多活的核心业务为:登录、充值点券

步骤 2-数据分类

登录

  1. 依赖 QQ 和微信账号授权登录,本身无需登录信息

  2. 微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID

  3. 王者荣耀只需要记录 RoleID 对应的区服信息,区服数据只会新增不会修改

充值点券

  1. RoleID:登录后就不会变了

  2. 点券余额:强一致性,不可丢失

  3. 点券充值订单:每次新建,全局唯一,不会修改

步骤 3-数据同步

登录

RoleID 和区服对应关系,只会新建不会修改,数据库同步即可

充值点券

  1. RoleID:同登录

  2. 点券余额:数据库同步

  3. 点券充值订单:数据库+消息队列同步

步骤 4-异常处理

登录

  1. QQ 和微信挂了怎么办:直接挂系统公告(系统停服维护)

充值点券

  1. 点券余额未及时同步到异地机房怎么办:等待同步完成

  2. 用户充值订单数据未及时同步到异地机房,用户看不到充值结果怎么办:等恢复了在看

异地多活架构示意图


发布于: 刚刚阅读数: 5
用户头像

李晨

关注

stay hungry,stay foolish 2021-07-27 加入

鄙视"PPT架构师",立志成为一个能干实事的架构师

评论

发布
暂无评论
极客时间架构训练营模块七作业_架构_李晨_InfoQ写作社区