写点什么

「架构实战营」模块七《如何设计异地多活架构》作业

作者:DaiChen
  • 2022 年 2 月 17 日
  • 本文字数:949 字

    阅读完需:约 3 分钟

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


【背景】

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


【作业要求】

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

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


【提示】

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

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

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

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

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


设计步骤 1 - 业务分级

王者荣耀商城业务:充值、购买(英雄、皮肤、道具)、礼物、夺宝;

其中核心业务:购买(英雄、皮肤、道具)、充值

设计步骤 2 - 数据分类

【充值】

  1. 用户 RoleID:登录后即可获取,全局唯一,不会修改

  2. 充值 ID:每次新建,全局唯一,不会修改

  3. 第三方交易流水号:每次充值成功后第三方返回,全局唯一,不会修改

  4. 用户点券数:全局一致性


【购买】

  1. 用户 RoleID:登录后即可获取,全局唯一,不会修改

  2. 购买 ID:每次新建,全局唯一,不会修改

  3. 用户点券数:全局一致性

  4. 英雄池、皮肤池、背包:不会修改(只会新增)

设计步骤 3 - 数据同步

【充值】

  1. 用户 RoleID:登录后即可获取,全局唯一,不会修改,数据库同步即可

  2. 充值 ID:每次新建,全局唯一,不会修改,用算法生成,数据库同步即可

  3. 第三方交易流水号:每次充值成功后第三方返回,全局唯一,不会修改,数据库同步即可

  4. 用户点券数:全局一致性,采用数据库同步余额,只能在归属地充值


【购买】

  1. 用户 RoleID:登录后即可获取,全局唯一,不会修改,数据库同步即可

  2. 购买 ID:每次新建,全局唯一,不会修改,用算法生成,数据库同步即可

  3. 用户点券数:全局一致性,采用数据库同步余额,只能在归属地购买

  4. 英雄池、皮肤池、背包:不会修改(只会新增),数据库同步即可

  5. 商品信息:后台更新商品信息都在南方机房,只做主从复制

设计步骤 4 - 异常处理

【充值】

  1. 微信钱包和 QQ 钱包挂了怎么办?

等系统恢复继续充值。


  1. 充值时归属地机房挂掉怎么办?

在非归属地机房通过临时事务表记录充值,待到恢复后将临时事务表中的事务发给归属地机房进行合并。


【购买】

1. 购买时归属地机房挂掉怎么办?

等恢复了再购买。

王者荣耀商城异地多活架构示意图


用户头像

DaiChen

关注

还未添加个人签名 2018.11.12 加入

还未添加个人简介

评论

发布
暂无评论
「架构实战营」模块七《如何设计异地多活架构》作业