写点什么

架构实战营模块七作业

用户头像
老猎人
关注
发布于: 2 小时前

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

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

1.虚拟物品没有库存限制,但有些商品比如英雄、皮肤一个用户只能买一个,需要判断用户是否买过。

2.虚拟物品购买后要立即到账的,没有物流过程,没有缓冲过程。

额外想到的

3.商城是在游戏软件中的,浏览商品需要登录,但是可以有第三方软件提供商品目录。

4.商品是游戏公司自己维护的,电商平台的商品是别的商家维护。

业务分级

根据访问量、核心场景、收入几个方面综合考虑后的分级:

登录>商品浏览>购买下单>充值>注册

因为用户需要先登录才能访问商城,用户需要先浏览商品才能完成下单,而充值和购买过程能直接影响收入,但是充值的频率是小于等于购买下单,注册的量是最少的。

数据分类

【登录】

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

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

【商品】

1.商品 ID,全局唯一,不会修改,公司自己维护商品数据,可重复,可丢失,可恢复。

【订单】

1.订单 ID,全局唯一,不会修改

【用户账户数据数据】

1.已有的英雄、皮肤,可以使用 HashSet 保存已有的英雄和皮肤,全局强一致性。

2.余额数据,全局强一致性。

数据同步

【登录】

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

【商品】

存储系统同步即可。

【订单】

订单数据,全局唯一,不会修改,不可丢失,数据库同步。

【用户账户数据数据】

全局强一致性,数据库同步。

异常处理

【登录】

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

直接挂公告:系统停服维护

【商品】

1.浏览商品过程中系统挂掉怎么办?

直接切换流量到备用机房,并不影响浏览商品。

【订单】

1.下单过程中,系统挂掉怎么办?

用户重新下单。

2.下订单后未及时同步到异地机房,用户看不到订单怎么办?

保证用户账户数据是一致的,历史订单暂时看不到没关系,可以给予提示,让用户等系统恢复了再看。

【用户账户数据】

1.用户账户数据未及时同步到异地机房,用户看到的英雄、皮肤、余额数据和印象里不一致怎么办?

人工订正数据,达到最终一致性。

2.修复数据之后,部分用户的账户数据丢失了,比如修复时购买了皮肤或者充值,怎么办?

送英雄、皮肤补偿。

异地多活架构示意图


发布于: 2 小时前阅读数: 2
用户头像

老猎人

关注

还未添加个人签名 2018.12.18 加入

还未添加个人简介

评论

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