写点什么

模块 7 王者荣耀商城 - 异地多活架构

作者:KING
  • 2023-03-01
    四川
  • 本文字数:907 字

    阅读完需:约 3 分钟

1. 背景

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

2. 业务分级

在商城余额充值

在商城购买商品


2.2 业务约束

登录后才能进行购买

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

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


3.数据分类

3.1 登录

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

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

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


3.2 充值/购买

充值、购买记录:有全局唯一 ID,与 RoleID,充值/购买记录只会新增不会修改。

剩余点数:记录剩余点数与 RoleID 绑定,具有全局 ID,ID 不能修改。

已购买商品:与区服和 RoleID 绑定,不能跨区服使用。


3.3 商品

虚拟商品没有库存,只有极少部分商品有库存限制

商品 ID:全局唯一,只能添加不能更改。


4.数据同步

4.1 登录

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


4.2 充值/购买

充值记录:算法生成记录 ID, ID 全局唯一,数据库同步即可。

剩余点数:需要更改,但不是很频繁,每个用户对应一条记录,记录 ID 由算法生词,记录 ID 全局唯一,ID 不会进行修改。数据库同步即可。

已购买商品:与区服和 roleID 绑定,可以删除,ID 由算法生成,ID 全局唯一,ID 不进行更改,数据库同步即可。


4.3 商品

商品库存:有数量限定的商品库存,数量需要修改,ID 全局唯一,ID 不能进行修改,数据量较少无需进行分区,数据库同步即可。

商品:虚拟商品,无需库存,ID 全局唯一,ID 不能进行修改。可以进行删除。数据库同步即可。


5. 异常处理

5.1 不能购买商品

系统提示系统正在维护,回复后再购买。

5.2 充值了但余额没有同步到异地机房

等系统恢复就可以购买了,如果客户依依不饶,就送优惠券礼包等补偿。

5.3 用户购买了商品,但没有同步到异地机房,用户无法使用

等系统恢复后就能使用了,如果客户依依不饶,就送优惠券礼包等补偿。


6.架构设计


用户在商城购买道具后,用户服务器会记录用户已购买的商品以及能在哪个区服能够使用。

南北机房区服务器互为主备,存储用户在该区已经购买的道具,通过数据库和消息队列保证数据一致性。

南北商城数据库互为备份,主要存储商品和商品数量。

用户头像

KING

关注

还未添加个人签名 2018-04-25 加入

还未添加个人简介

评论

发布
暂无评论
模块7 王者荣耀商城-异地多活架构_KING_InfoQ写作社区