写点什么

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

作者:Geek_7d539e
  • 2023-03-03
    福建
  • 本文字数:719 字

    阅读完需:约 2 分钟

  1. 业务数据

淘手游平台公布了 2017 年 6 月的平台交易数据,这是淘手游继 3 月后,连续第四个月公布其交易数据。6 月份,平台总成交量达到 18 万单,月流水破亿元。

即一天产生 6000 单,假设峰值出现在晚上 7-9 的两个小时,tps 即 6000/(3600*2)≈ 1,不大存在高性能场景,更多考虑高可用的异地多活架构。

  1. 业务功能

1)商品类目

2)商品

3)点券充值

4)点券支付

5)订单

6)出货

  1. 关键业务约束

1)只有微信钱包/QQ 钱包充值点券后,才能在商场里面用点券支付

2)有些道具只能购买一次,有些商品可重复购买

  1. 架构分析

【业务分级】

考虑实现成本,只保证核心业务的异地多活,

选择了:点券充值、点券支付、出货

【数据分类】

1)点券充值

调出微信/QQ 收银台,充完值回调玩家点券余额充值业务,并且增加充值记录,其中,余额必须保证强一致性,充值记录只需最终一致性即可

2)点券支付

点券支付,完成点券余额扣减操作,同时完成扣减记录的审计日志操作,基本同点券充值一样

3)出货

当完成订成下单操作,完成点券扣减后,道具必须出现在玩家的道具列表中,玩家道具记录是只增不减的数据,道具 ID 本身也具有全局唯一性

【数据同步】

1)点券充值/点券支付

玩家 RoleID 全局唯一,且不会变化,登录充值/支付,只需增减玩家对应的点券余额,以及增减余额的审计记录,使用数据库同步

2)下单完成后,出货,道具下放给玩家,出现在玩家的道具列表里面,只增不减,对于可多次购买的道具使用数据库进行同步即可,对于只允许购买一次的道具使用消息队列同步

【异常处理】

1)故障切换后,未能看到刚充值的点券余额

当 A 机房挂掉,切换到 B 机房后,可先在 B 机房再次充值,等到 A 机房恢复后,再同步余额

2)故障切换后,未能找到道具

对于可多次购买的道具,可再次购买,最后再同步


5、架构设计示意图


用户头像

Geek_7d539e

关注

还未添加个人签名 2020-06-12 加入

还未添加个人简介

评论

发布
暂无评论
王者荣耀商城异地多活架构设计_Geek_7d539e_InfoQ写作社区