写点什么

架构训练营 - 作业七

作者:默光
  • 2022 年 4 月 05 日
  • 本文字数:657 字

    阅读完需:约 2 分钟

1.王者荣耀商城业务背景

1.1 业务数据

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

1.2 业务功能

  • 使用微信钱包或者 QQ 卡包充值点券,然后在商城中使用点券才能完成支付

  • 使用点券购买英雄、皮肤

  • 使用点券购买道具

1.3 关键业务约束

  • 只能使用微信钱包或者 QQ 卡包才能充值点券

  • 英雄、皮肤只能买一个,不能重复购买

  • 购买的物品不能跨区使用

  • 点券不能跨区使用

2.设计步骤

2.1 业务分级

基于上述的分析可知,异地多活应该保证充值点券、商品购买这两个核心业务

2.2 数据分类

  • 充值点券

  • 用户 RoleID:全局唯一,不可变

  • 充值点券 ID:每次新建,区服唯一,不可变

  • 点券余额:区服强一致性

  • 充值交易数据:与充值点券 ID 绑定

  • 商品购买

  • 用户 Role ID:全局唯一,不可变

  • 购买商品交易 ID:每次新建,区服唯一,不可变

  • 英雄、皮肤 ID 及数量:只能购买一次,区服唯一

  • 购买道具:可购买多次

  • 购买交易数据:与购买商品交易 ID 绑定即可

2.3 数据同步

  • 充值点券

  • 交易点券 ID:每次新建,区服唯一,不会修改,用算法生成,可以采用数据库同步充值数据

  • 点券余额:区服强一致性,采用数据库同步余额数据

  • 商品购买

  • 购买商品交易 ID:每次新建,区服唯一,不会修改,用算法生成,采用数据库同步即可

2.4 异常处理

  • 充值点券

  • 调用微信钱包或者 QQ 卡包充值服务异常?

  • 答:直接挂公告:充值服务维护中,请稍后再试

  • 充值过程中,服务器宕机?

  • 答:记录下异常订单,等服务器恢复后修正

  • 商品购买

  • 购买英雄时,点券余额已扣除,但是英雄未购买成功?

  • 答:记录下异常订单,进行余额修正,若用户投诉,也可以以点券或者道具的方式,弥补用户的损失

3.王者荣耀商城异地多活架构示意图

商城异地多活架构


用户头像

默光

关注

还未添加个人签名 2019.06.18 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营-作业七_默光_InfoQ写作平台