写点什么

王者荣耀商城异地多活部署设计

作者:Geek_e8bfe4
  • 2022 年 7 月 20 日
  • 本文字数:782 字

    阅读完需:约 3 分钟

业务背景

【业务数据】

2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。

异地多活架构设计

业务分级

涉及业务

  • 登录:需要使用微信或 qq 登录后才能使用商城

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

  • 商品:是虚拟物品商城

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

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

核心业务

  1. 登录:因为所有服务均发生在登录后,故登录是最影响用户体验的。

  2. 充值点券:用户充值点卷后可随时购买,即使商品服务挂掉,用户也可以容忍等待商城服务恢复了再购买。

数据分类

登录

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

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

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

支付

  1. 点券余额:关联 RoleID ,全局强一致。

  2. 支付订单 ID:每次新建,全局唯一,不会修改,与微信钱包或者 QQ 钱包的支付记录有绑定关系;

商品

  1. 商品信息:实现最终一致性即可,在下单时可单独对价格等敏感信息进行单独校验。

  2. 英雄和皮肤:由于每个用户只能购买一个,要求实现全局强一致性。

  3. 其他道具:不限制消费次数,实现最终一致性即可。

数据同步

登录

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

支付

  1. 点券余额:全局强一致性,采用数据库同步。

  2. 支付订单 ID:与微信钱包或者 QQ 钱包的支付记录有绑定关系,全局强一致性,采用数据库同步;

商品

  1. 商品信息:实现最终一致性即可,采用数据库同步 + 消息队列同步。

  2. 英雄和皮肤:实现全局强一致性,采用数据库同步。

  3. 其他道具:最终一致性,采用数据库 + 消息队列同步。

异常处理

登录

  1. 登录异常:依赖于 qq 和微信服务,发生异常时可通过公告通知用户,并进行事后补偿。

支付

  1. 点券充值异常:客服人工修正,视情况发送不同程度的补偿。

商品

  1. 购买商品异常:客服人工修正,视情况发送不同程度的补偿。

架构设计


发布于: 刚刚阅读数: 6
用户头像

Geek_e8bfe4

关注

还未添加个人签名 2022.01.25 加入

还未添加个人简介

评论

发布
暂无评论
王者荣耀商城异地多活部署设计_Geek_e8bfe4_InfoQ写作社区