写点什么

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

作者:王大胖
  • 2022 年 3 月 28 日
  • 本文字数:808 字

    阅读完需:约 3 分钟

【背景】

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

【作业要求】

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

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

【提示】

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

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

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

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

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


一、业务特点

核心业务:登录,充值,购买(英雄、皮肤)

需要保证:充值一定要到账,购买一个皮肤后应立即可以查询到。


二、登录

1、通过微信、QQ 登录,登录成功后,生成全局的 RoleID,后续所有操作都是基于这个 roleID 操作。

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


三、商城购买

1、RoleID:登录后就不会变了;

2、购买商品 : 商品和唯一的 RoleId 绑定,购买记录只会新增不会修改

3、虚拟商品和实体商品两个主要区别是:虚拟商品没有物流和实际库存的概念

4、用户点券的记录存在 mysql 数据,通过数据复制同步两个机房的数据

5、因为没有库存概念及物流,可以超卖,及购买后直接受到货。

四、商城充值

1、充值点券也和唯一的 RoleId 绑定,充值记录只会新增不会修改


五、数据同步

1、登录信息利用数据库加消息队列同步

2、订单信息,订单 ID 全局唯一,数据库加消息队列同步

3、充值点券账户,需要强一致性,数据库同步

4、商品库存,可以允许超卖,每个机房可以放置不同库存,无需同步

六、异常处理

1、用户购买商品过程中,商城挂了怎么办?

做好分布式事务,保持最终一致性,点券退回用户或者商品最终补偿用户,道具补偿用户

2、 微信和 QQ 挂了怎么办?

给予系统停服维护的公告。

3、商城充值过程中,商城挂了怎么办?

钱退回用户,提示暂未充值成功,道具补偿用户

七、异地多活设计图


用户头像

王大胖

关注

还未添加个人签名 2021.12.07 加入

还未添加个人简介

评论

发布
暂无评论
王者荣耀商城异地多活架构设计_王大胖_InfoQ写作平台