模块七作业
王者荣耀商城异地多活架构设计
王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别
用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付
用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买
用户买鲜花、改名卡之类的道具可以买多个
业务背景
根据 2020.11 月公布的数据,王者荣耀全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
业务功能
登录:使用微信或 QQ 账号登录游戏
对战:例如匹配、排位、巅峰赛
商城:购买英雄、皮肤、道具等
活动:领取各种奖励和道具
社区:各种攻略,视频等
关键业务约束
商城业务的关键约束:
登录用户才能充值和购买
点卷余额不够不能购买道具
英雄和皮肤不能重复购买
业务分级
登录对战为游戏最核心的部分,其次是商城功能。
商城功能中最核心的是:1. 浏览和购买,2. 充值,其他功能如赠送,打折,抢购等相对优先级更低。
数据分类
商城关键数据:商品信息,用户余额及充值信息,用户拥有商品信息,订单信息。
商城内商品信息:各个英雄,皮肤,道具的商城内元数据,如图片,功能,价格等。虚拟商品一般无库存限制(如果有限时/限量抢购功能等可以额外添加)。
用户 RoleID:和区服对应,区服数据只会新增不会修改。
用户点卷余额:点卷余额信息,绑定 RoleID。
用户充值订单信息:与微信/QQ 支付订单相对应。订单完成后不会再修改。
用户商品购买订单信息:用户购买商城道具的订单。订单完成后不会再修改。
用户已拥有商品信息:用户已经拥有的英雄,皮肤,剩余道具数量等。
数据同步
商品购买信息,强一致性数据库同步,不可丢失。
充值余额信息,强一致性数据库同步,不可丢失。
商城内商品上架信息,数据库同步,最终一致性。
异地多活架构
异常处理
微信或 QQ 挂了怎么办?
对应区服进行公告停服处理。
微信或 QQ 支付出问题怎么办?
暂停充值功能,报错提醒。
充值后未及时同步到异地机房怎么办?
如果消费余额不足,进行暂时性的余额不足提醒。等同步完成之后即可顺利购买,如果同步长时间出问题可以考虑用户道具补偿。
购买英雄或皮肤未及时成功同步导致多次购买怎么办?
对无效订单进行撤销。
版权声明: 本文为 InfoQ 作者【Geek_1cdcf6】的原创文章。
原文链接:【http://xie.infoq.cn/article/42399d06420ba2a2acf2ae4e8】。未经作者许可,禁止转载。
评论