Bootstrap

架构训练营模块七作业

作业

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

【背景】

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

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

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

【提示】

  • 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,

  • 注意识别出来;

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

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

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

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

步骤1-业务分级

充值,购买,商品(英雄,皮肤,鲜花,改名卡之类),促销,订单

由于是虚拟商品,不涉及到库存控制,不存在超买超卖现象,卖家只有一个,就是平台

核心业务:购买,订单,商品

步骤2-数据分类

步骤3-数据同步

英雄皮肤之类商品

数据库同步

用户roleid+交易订单+英雄,鲜花,改名卡之类商品

数据库同步+消息队列同步

用户余额

不做双活,不做跨机房同步,双活成本高,发生数据不一致影响程度比较大

步骤4-异常处理

无法充值怎么办?

公告客户,暂停充值业务

购买点券扣了,商品没到账怎么办?

提供申诉通道,或者等恢复了补上去,补偿优惠券

订单数据未及时同步怎么办?

容忍,等恢复了再看交易记录

用户余额系统所在机房挂了怎么办?

缓存最后一次购买的余额用于临时显示,系统公告停止购买的友好提示

英雄皮肤之类商品还没同步到其他机房就挂了导致购买了多个皮肤怎么办?

最后一个皮肤覆盖之前购买的皮肤