写点什么

模块七 -- 王者荣耀商城异地多活架构设计

作者:闲人Eric
  • 2023-01-18
    上海
  • 本文字数:770 字

    阅读完需:约 3 分钟

业务分级

王者荣耀按重要性排序,最重要的前三个业务为登录、对战、商城,这里主要分析【商城】的异地多活方案


王者荣耀商城和淘宝商城不同的是:

1.淘宝商城的东西是可以退货的,王者荣耀商城的东西是不可以退货的。

2.王者荣耀商城的东西是没有库存一说的,但是淘宝商城的东西是有库存一说的

数据分类

1.RoleID:登录后就不会改变了,但是要记录 RoleId 对应的区服关系,区服数据只会新增不会修改

2.用户点券余额:强一致性,且和 RoleId+区服绑定。用户充的点券是要强制绑定到某个区服的,跨区服的点券是不可以共用的。

3.点券充值订单信息: 全局唯一,每次新建,不会修改

4.购买物品订单 : 全局唯一,每次新建,不会修改

5.皮肤、英雄等不可重复物品:和区服+roleId 绑定,只会新建一次,不会修改,强一致性

6.鲜花,改名卡:和区服+roleId 绑定,可以使用,也可以购买,最终一致性

数据同步

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

2、点券余额与区服的对应关系,强一致性,数据库同步即可。

3、点券支付订单 ID,全局唯一,每次新增,不会修改,用算法生成,数据库同步即可。

4、购买虚拟商品的订单 ID 和区服对应关系,只会新建不会修改,数据库同步即可。

5、唯一性商品与区服+RoleId 的对应关系,强一致性,数据库同步即可。

6、非唯一性商品与区服+RoleId 的对应关系,最终一致性。

异常处理

1、充值过程中微信钱包和 QQ 钱包挂了怎么办?

公告提示:充值功能暂停,请稍后再试。

2、用户消耗了点券,但是没有得到相应的道具怎么办?

通过日志或数据库记录的一些信息恢复数据,并对用户进行相应的补偿

3、用户通过微信钱包和 QQ 钱包进行了消费,但是点券未到账

可以通过人工排查微信钱包和 QQ 钱包的充值记录,或者系统定时扫描数据库中状态异常的付费订单。

4、用户在商城购买的商品、订单数据未及时同步至异地机房该怎么办

等恢复后再处理。

异常多活架构图



用户头像

闲人Eric

关注

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

还未添加个人简介

评论

发布
暂无评论
模块七--王者荣耀商城异地多活架构设计_架构实战营_闲人Eric_InfoQ写作社区