写点什么

【架构实战营】模块七作业

作者:liu🍊
  • 2021 年 12 月 23 日
  • 本文字数:709 字

    阅读完需:约 2 分钟

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

【背景】

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

(1)王者荣耀的商城是虚拟物品商城

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

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

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

 

1. 业务分级

王者荣耀商城涉及登录、充值、商品(英雄、皮肤、道具等)、交易等业务。

在异地多活架构设计中,需要优先保障的是登录、充值、交易。

 

2. 数据分类

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

商品 ID:唯一标识英雄、皮肤、道具等虚拟物品,全局唯一,不可修改。

点券信息:充值依赖 QQ 钱包、微信钱包支付,充值成功后,按对应平台的回调信息更新点券数值即可。

订单 ID:交易单号,全局唯一,不可修改。

订单数据:RoleID 与商品 ID 之间的交易关系。不能丢失,不能重复,最终一致性。RoleID 与英雄、皮肤的购买关系一一绑定,不可重复购买。RoleID 与道具之间的购买关系可以 1 对多条。

 

3. 数据同步

RoleID:只会新建不会修改,数据库同步即可。

商品 ID:只会新建不会修改,数据库同步即可。

点券信息:会更新,满足全局一致性,数据库同步即可。

订单 ID:每次新增,全局唯一,不可修改,数据库同步即可。

订单数据:和订单 ID 绑定,每次新增不会修改,数据库同步即可。

 

4. 异常处理

(1)微信和 QQ 挂了怎么办?

此时王者荣耀无法登陆,直接挂公告:系统停服维护。

 

(2)购买英雄、皮肤、道具失败怎么办?

重新发起购买交易

 

(3)用户的商城购买数据未及时同步到异地机房,用户看不到所购的道具怎么办?

等待数据同步完成后再查看

 

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



用户头像

liu🍊

关注

还未添加个人签名 2021.01.26 加入

还未添加个人简介

评论

发布
暂无评论
【架构实战营】模块七作业